25 lines
554 B
Go
25 lines
554 B
Go
package leases
|
|
|
|
import "context"
|
|
|
|
type leaseKey struct{}
|
|
|
|
// WithLease sets a given lease on the context
|
|
func WithLease(ctx context.Context, lid string) context.Context {
|
|
ctx = context.WithValue(ctx, leaseKey{}, lid)
|
|
|
|
// also store on the grpc headers so it gets picked up by any clients that
|
|
// are using this.
|
|
return withGRPCLeaseHeader(ctx, lid)
|
|
}
|
|
|
|
// Lease returns the lease from the context.
|
|
func Lease(ctx context.Context) (string, bool) {
|
|
lid, ok := ctx.Value(leaseKey{}).(string)
|
|
if !ok {
|
|
return fromGRPCHeader(ctx)
|
|
}
|
|
|
|
return lid, ok
|
|
}
|