Brian Picciano
16aca610b4
It's still not possible to pick a network from the command-line, so this is a bit broken, but the daemon component should handle it correctly at least.
31 lines
757 B
Go
31 lines
757 B
Go
package jsonrpc2
|
|
|
|
import (
|
|
"context"
|
|
"maps"
|
|
)
|
|
|
|
type ctxKeyMeta int
|
|
|
|
// WithMeta returns a Context where the given key will be set to the given value
|
|
// in the Meta field of all JSONRPC2 requests made using Clients from this
|
|
// package.
|
|
func WithMeta(ctx context.Context, key string, value any) context.Context {
|
|
m, _ := ctx.Value(ctxKeyMeta(0)).(map[string]any)
|
|
if m == nil {
|
|
m = map[string]any{}
|
|
} else {
|
|
m = maps.Clone(m)
|
|
}
|
|
|
|
m[key] = value
|
|
return context.WithValue(ctx, ctxKeyMeta(0), m)
|
|
}
|
|
|
|
// GetMeta returns all key/values which have been set on the Context using
|
|
// WithMeta. This may return nil if WithMeta was never called.
|
|
func GetMeta(ctx context.Context) map[string]any {
|
|
m, _ := ctx.Value(ctxKeyMeta(0)).(map[string]any)
|
|
return m
|
|
}
|