Moved to google.golang.org/genproto/googleapis/api/annotations
Fixes #52
This commit is contained in:
38
vendor/github.com/go-kit/kit/circuitbreaker/handy_breaker.go
generated
vendored
Normal file
38
vendor/github.com/go-kit/kit/circuitbreaker/handy_breaker.go
generated
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
package circuitbreaker
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/streadway/handy/breaker"
|
||||
|
||||
"github.com/go-kit/kit/endpoint"
|
||||
)
|
||||
|
||||
// HandyBreaker returns an endpoint.Middleware that implements the circuit
|
||||
// breaker pattern using the streadway/handy/breaker package. Only errors
|
||||
// returned by the wrapped endpoint count against the circuit breaker's error
|
||||
// count.
|
||||
//
|
||||
// See http://godoc.org/github.com/streadway/handy/breaker for more
|
||||
// information.
|
||||
func HandyBreaker(cb breaker.Breaker) endpoint.Middleware {
|
||||
return func(next endpoint.Endpoint) endpoint.Endpoint {
|
||||
return func(ctx context.Context, request interface{}) (response interface{}, err error) {
|
||||
if !cb.Allow() {
|
||||
return nil, breaker.ErrCircuitOpen
|
||||
}
|
||||
|
||||
defer func(begin time.Time) {
|
||||
if err == nil {
|
||||
cb.Success(time.Since(begin))
|
||||
} else {
|
||||
cb.Failure(time.Since(begin))
|
||||
}
|
||||
}(time.Now())
|
||||
|
||||
response, err = next(ctx, request)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user