42 lines · 1.3 KB · Go
RawDownload
package executor import "context" type downstreamWebsocketContextKey struct{}type requireUpstreamWebsocketContextKey struct{} // WithDownstreamWebsocket marks the current request as coming from a downstream websocket connection.func WithDownstreamWebsocket(ctx context.Context) context.Context {	if ctx == nil {		ctx = context.Background()	}	return context.WithValue(ctx, downstreamWebsocketContextKey{}, true)} // DownstreamWebsocket reports whether the current request originates from a downstream websocket connection.func DownstreamWebsocket(ctx context.Context) bool {	if ctx == nil {		return false	}	raw := ctx.Value(downstreamWebsocketContextKey{})	enabled, ok := raw.(bool)	return ok && enabled} // WithRequiredUpstreamWebsocket marks a request whose incremental context is valid only on the current upstream websocket.func WithRequiredUpstreamWebsocket(ctx context.Context) context.Context {	if ctx == nil {		ctx = context.Background()	}	return context.WithValue(ctx, requireUpstreamWebsocketContextKey{}, true)} // RequiredUpstreamWebsocket reports whether falling back to an HTTP upstream would lose request context.func RequiredUpstreamWebsocket(ctx context.Context) bool {	if ctx == nil {		return false	}	raw := ctx.Value(requireUpstreamWebsocketContextKey{})	enabled, ok := raw.(bool)	return ok && enabled}