context.go 669 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package ice
  2. import (
  3. "context"
  4. "time"
  5. )
  6. func (a *Agent) context() context.Context {
  7. return agentContext(a.done)
  8. }
  9. type agentContext chan struct{}
  10. // Done implements context.Context
  11. func (a agentContext) Done() <-chan struct{} {
  12. return (chan struct{})(a)
  13. }
  14. // Err implements context.Context
  15. func (a agentContext) Err() error {
  16. select {
  17. case <-(chan struct{})(a):
  18. return ErrRunCanceled
  19. default:
  20. return nil
  21. }
  22. }
  23. // Deadline implements context.Context
  24. func (a agentContext) Deadline() (deadline time.Time, ok bool) {
  25. return time.Time{}, false
  26. }
  27. // Value implements context.Context
  28. func (a agentContext) Value(key interface{}) interface{} {
  29. return nil
  30. }