github.com/xmidt-org/webpa-common@v1.11.9/middleware/timeout.go (about) 1 package middleware 2 3 import ( 4 "context" 5 "time" 6 7 "github.com/go-kit/kit/endpoint" 8 ) 9 10 const DefaultTimeout = 30 * time.Second 11 12 // Timeout applies the given timeout to all WRP Requests. The context's cancellation 13 // function is always called. 14 func Timeout(timeout time.Duration) endpoint.Middleware { 15 if timeout < 1 { 16 timeout = DefaultTimeout 17 } 18 19 return func(next endpoint.Endpoint) endpoint.Endpoint { 20 return func(ctx context.Context, value interface{}) (interface{}, error) { 21 timeoutCtx, cancel := context.WithTimeout(ctx, timeout) 22 defer cancel() 23 24 return next(timeoutCtx, value) 25 } 26 } 27 }