29 lines
792 B
Go
29 lines
792 B
Go
package metrics
|
|
|
|
import "context"
|
|
|
|
type contextValue int
|
|
|
|
const (
|
|
publishObserved contextValue = iota
|
|
subscribeObserved
|
|
)
|
|
|
|
// setPublishObservedToCtx is used to achieve metrics idempotency in case of double applied middleware
|
|
func setPublishObservedToCtx(ctx context.Context) context.Context {
|
|
return context.WithValue(ctx, publishObserved, true)
|
|
}
|
|
|
|
func publishAlreadyObserved(ctx context.Context) bool {
|
|
return ctx.Value(publishObserved) != nil
|
|
}
|
|
|
|
// setSubscribeObservedToCtx is used to achieve metrics idempotency in case of double applied middleware
|
|
func setSubscribeObservedToCtx(ctx context.Context) context.Context {
|
|
return context.WithValue(ctx, subscribeObserved, true)
|
|
}
|
|
|
|
func subscribeAlreadyObserved(ctx context.Context) bool {
|
|
return ctx.Value(subscribeObserved) != nil
|
|
}
|