aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/jackc/puddle/v2/context.go
blob: e19d2a609b9e06889480a6c1375ea4f8ffcb9cb9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package puddle

import (
	"context"
	"time"
)

// valueCancelCtx combines two contexts into one. One context is used for values and the other is used for cancellation.
type valueCancelCtx struct {
	valueCtx  context.Context
	cancelCtx context.Context
}

func (ctx *valueCancelCtx) Deadline() (time.Time, bool) { return ctx.cancelCtx.Deadline() }
func (ctx *valueCancelCtx) Done() <-chan struct{}       { return ctx.cancelCtx.Done() }
func (ctx *valueCancelCtx) Err() error                  { return ctx.cancelCtx.Err() }
func (ctx *valueCancelCtx) Value(key any) any           { return ctx.valueCtx.Value(key) }

func newValueCancelCtx(valueCtx, cancelContext context.Context) context.Context {
	return &valueCancelCtx{
		valueCtx:  valueCtx,
		cancelCtx: cancelContext,
	}
}