package net import ( "context" "time" ) // DialPeerTimeout is the default timeout for a single call to `DialPeer`. When // there are multiple concurrent calls to `DialPeer`, this timeout will apply to // each independently. var DialPeerTimeout = 60 * time.Second type dialPeerTimeoutCtxKey struct{} // GetDialPeerTimeout returns the current DialPeer timeout (or the default). func GetDialPeerTimeout(ctx context.Context) time.Duration { if to, ok := ctx.Value(dialPeerTimeoutCtxKey{}).(time.Duration); ok { return to } return DialPeerTimeout } // WithDialPeerTimeout returns a new context with the DialPeer timeout applied. // // This timeout overrides the default DialPeerTimeout and applies per-dial // independently. func WithDialPeerTimeout(ctx context.Context, timeout time.Duration) context.Context { return context.WithValue(ctx, dialPeerTimeoutCtxKey{}, timeout) }