1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package aws
- import (
- "time"
- )
- // Context is an copy of the Go v1.7 stdlib's context.Context interface.
- // It is represented as a SDK interface to enable you to use the "WithContext"
- // API methods with Go v1.6 and a Context type such as golang.org/x/net/context.
- //
- // See https://golang.org/pkg/context on how to use contexts.
- type Context interface {
- // Deadline returns the time when work done on behalf of this context
- // should be canceled. Deadline returns ok==false when no deadline is
- // set. Successive calls to Deadline return the same results.
- Deadline() (deadline time.Time, ok bool)
- // Done returns a channel that's closed when work done on behalf of this
- // context should be canceled. Done may return nil if this context can
- // never be canceled. Successive calls to Done return the same value.
- Done() <-chan struct{}
- // Err returns a non-nil error value after Done is closed. Err returns
- // Canceled if the context was canceled or DeadlineExceeded if the
- // context's deadline passed. No other values for Err are defined.
- // After Done is closed, successive calls to Err return the same value.
- Err() error
- // Value returns the value associated with this context for key, or nil
- // if no value is associated with key. Successive calls to Value with
- // the same key returns the same result.
- //
- // Use context values only for request-scoped data that transits
- // processes and API boundaries, not for passing optional parameters to
- // functions.
- Value(key interface{}) interface{}
- }
- // BackgroundContext returns a context that will never be canceled, has no
- // values, and no deadline. This context is used by the SDK to provide
- // backwards compatibility with non-context API operations and functionality.
- //
- // Go 1.6 and before:
- // This context function is equivalent to context.Background in the Go stdlib.
- //
- // Go 1.7 and later:
- // The context returned will be the value returned by context.Background()
- //
- // See https://golang.org/pkg/context for more information on Contexts.
- func BackgroundContext() Context {
- return backgroundCtx
- }
- // SleepWithContext will wait for the timer duration to expire, or the context
- // is canceled. Which ever happens first. If the context is canceled the Context's
- // error will be returned.
- //
- // Expects Context to always return a non-nil error if the Done channel is closed.
- func SleepWithContext(ctx Context, dur time.Duration) error {
- t := time.NewTimer(dur)
- defer t.Stop()
- select {
- case <-t.C:
- break
- case <-ctx.Done():
- return ctx.Err()
- }
- return nil
- }
|