File: context.go

package info (click to toggle)
golang-github-jackc-puddle-v2 2.2.2-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 188 kB
  • sloc: makefile: 2
file content (24 lines) | stat: -rw-r--r-- 776 bytes parent folder | download
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,
	}
}