ooni-probe-cli/internal/engine/legacy/netx/transactionid/transactionid.go

26 lines
597 B
Go
Raw Normal View History

// Package transactionid contains code to share the transactionID
package transactionid
import (
"context"
"github.com/ooni/probe-cli/v3/internal/engine/atomicx"
)
type contextkey struct{}
var id = atomicx.NewInt64()
// WithTransactionID returns a copy of ctx with TransactionID
func WithTransactionID(ctx context.Context) context.Context {
return context.WithValue(
ctx, contextkey{}, id.Add(1),
)
}
// ContextTransactionID returns the TransactionID of the context, or zero
func ContextTransactionID(ctx context.Context) int64 {
id, _ := ctx.Value(contextkey{}).(int64)
return id
}