Commit 7eee7c00 authored by vyzo's avatar vyzo

add support for transient connections

parent 410e6bdb
......@@ -13,9 +13,11 @@ var DialPeerTimeout = 60 * time.Second
type noDialCtxKey struct{}
type dialPeerTimeoutCtxKey struct{}
type forceDirectDialCtxKey struct{}
type useTransientCtxKey struct{}
var noDial = noDialCtxKey{}
var forceDirectDial = forceDirectDialCtxKey{}
var useTransient = useTransientCtxKey{}
// EXPERIMENTAL
// WithForceDirectDial constructs a new context with an option that instructs the network
......@@ -66,3 +68,18 @@ func GetDialPeerTimeout(ctx context.Context) time.Duration {
func WithDialPeerTimeout(ctx context.Context, timeout time.Duration) context.Context {
return context.WithValue(ctx, dialPeerTimeoutCtxKey{}, timeout)
}
// WithUseTransient constructs a new context with an option that instructs to network
// that it is acceptable to use a transient connection when opening a new stream.
func WithUseTransient(ctx context.Context) context.Context {
return context.WithValue(ctx, useTransient, true)
}
// GetUseTransient returns true if the use transient option is set in the context.
func GetUseTransient(ctx context.Context) bool {
v := ctx.Value(useTransient)
if v != nil {
return true
}
return false
}
......@@ -103,6 +103,8 @@ type Stat struct {
Direction Direction
// Opened is the timestamp when this connection was opened.
Opened time.Time
// Transient indicates that this connection is transient and may be closed soon
Transient bool
// Extra stores additional metadata about this connection.
Extra map[interface{}]interface{}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment