26 lines
597 B
Go
26 lines
597 B
Go
|
// 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
|
||
|
}
|