Documentation
¶
Index ¶
- Variables
- func SetRoutingMetadata(md metadata.MD, agentID int64) metadata.MD
- type AgentFinder
- type AggregatingQuerier
- type Handler
- type MultiURL
- func (*MultiURL) Descriptor() ([]byte, []int)deprecated
- func (x *MultiURL) GetHost() string
- func (x *MultiURL) GetIp() [][]byte
- func (x *MultiURL) GetPort() uint32
- func (x *MultiURL) GetScheme() string
- func (x *MultiURL) GetTlsHost() string
- func (*MultiURL) ProtoMessage()
- func (x *MultiURL) ProtoReflect() protoreflect.Message
- func (x *MultiURL) Reset()
- func (x *MultiURL) String() string
- type Plugin
- func (p *Plugin) FindReadyGateway(ctx context.Context, log *slog.Logger, method string) (tunserver.ReadyGateway[nettool.MultiURL], *slog.Logger, int64, error)
- func (p *Plugin) FindTunnel(stream grpc.ServerStream, rpcAPI modshared.RPCAPI) (bool, *slog.Logger, tunserver.FindHandle, error)
- func (p *Plugin) PrepareStreamForForwarding(stream grpc.ServerStream) (grpc.ServerStream, error)
- type Querier
- type RedisTracker
- type Registerer
- type RegistrationBuilder
- type Registry
- func (r *Registry) FindTunnel(ctx context.Context, agentID int64, service, method string) (bool, tunserver.FindHandle)
- func (r *Registry) HandleTunnel(ageCtx context.Context, agentInfo *api.AgentInfo, ...) error
- func (r *Registry) KASURLsByAgentID(ctx context.Context, agentID int64) ([]nettool.MultiURL, error)
- func (r *Registry) Run(ctx context.Context) error
- type Tracker
- type TunnelFinder
Constants ¶
This section is empty.
Variables ¶
View Source
var File_internal_module_agentk2kas_tunnel_router_router_proto protoreflect.FileDescriptor
Functions ¶
Types ¶
type AgentFinder ¶ added in v17.1.0
type AggregatingQuerier ¶
type AggregatingQuerier struct {
// contains filtered or unexported fields
}
AggregatingQuerier groups polling requests.
func NewAggregatingQuerier ¶
func (*AggregatingQuerier) CachedGatewayURLs ¶
func (q *AggregatingQuerier) CachedGatewayURLs(agentID int64) []nettool.MultiURL
func (*AggregatingQuerier) PollGatewayURLs ¶
func (q *AggregatingQuerier) PollGatewayURLs(ctx context.Context, agentID int64, cb tunserver.PollGatewayURLsCallback[nettool.MultiURL])
type Handler ¶
type Handler interface { // HandleTunnel is called with server-side interface of the reverse tunnel. // It registers the tunnel and blocks, waiting for a request to proxy through the tunnel. // The method returns the error value to return to gRPC framework. // ageCtx can be used to unblock the method if the tunnel is not being used already. HandleTunnel(ageCtx context.Context, agentInfo *api.AgentInfo, server grpc.BidiStreamingServer[rpc.ConnectRequest, rpc.ConnectResponse]) error }
type MultiURL ¶ added in v17.9.0
type MultiURL struct { Scheme string `protobuf:"bytes,1,opt,name=scheme" json:"scheme,omitempty"` Ip [][]byte `protobuf:"bytes,2,rep,name=ip" json:"ip,omitempty"` Host string `protobuf:"bytes,3,opt,name=host" json:"host,omitempty"` TlsHost string `protobuf:"bytes,4,opt,name=tls_host,json=tlsHost" json:"tls_host,omitempty"` Port uint32 `protobuf:"varint,5,opt,name=port" json:"port,omitempty"` // contains filtered or unexported fields }
func (*MultiURL) Descriptor
deprecated
added in
v17.9.0
func (*MultiURL) GetTlsHost ¶ added in v17.9.0
func (*MultiURL) ProtoMessage ¶ added in v17.9.0
func (*MultiURL) ProtoMessage()
func (*MultiURL) ProtoReflect ¶ added in v17.9.0
func (x *MultiURL) ProtoReflect() protoreflect.Message
type Plugin ¶ added in v17.1.0
type Plugin struct {
// contains filtered or unexported fields
}
func NewPlugin ¶ added in v17.1.0
func NewPlugin( api modshared.API, kasPool grpctool.PoolInterface[nettool.MultiURL], gatewayQuerier tunserver.PollingGatewayURLQuerier[nettool.MultiURL], agentFinder AgentFinder, tunnelRegistry TunnelFinder, tracer trace.Tracer, meter otelmetric.Meter, ownPrivateAPIURL nettool.MultiURL, pollConfig retry.PollConfigFactory, tryNewGatewayInterval time.Duration, tunnelFindTimeout time.Duration, ) (*Plugin, error)
func (*Plugin) FindReadyGateway ¶ added in v17.1.0
func (*Plugin) FindTunnel ¶ added in v17.1.0
func (*Plugin) PrepareStreamForForwarding ¶ added in v17.1.0
func (p *Plugin) PrepareStreamForForwarding(stream grpc.ServerStream) (grpc.ServerStream, error)
type RedisTracker ¶
type RedisTracker struct {
// contains filtered or unexported fields
}
func NewRedisTracker ¶
func (*RedisTracker) KASURLsByAgentID ¶
func (*RedisTracker) RegistrationBuilder ¶ added in v17.4.0
func (t *RedisTracker) RegistrationBuilder() RegistrationBuilder
type Registerer ¶
type Registerer interface { RegistrationBuilder() RegistrationBuilder // GC deletes expired tunnels from the underlying storage. GC(ctx context.Context, agentIDs []int64) (int, error) }
Registerer allows to register and unregister tunnels. Caller is responsible for periodically calling GC() and Refresh(). Not safe for concurrent use.
type RegistrationBuilder ¶ added in v17.4.0
type RegistrationBuilder interface { // Register registers tunnels for the given agent ids with the tracker. Register(ttl time.Duration, agentIDs ...int64) // Unregister unregisters tunnels for the given agent ids with the tracker. Unregister(agentIDs ...int64) // Refresh refreshes registered tunnels in the underlying storage. Refresh(ttl time.Duration, agentIDs ...int64) // Do executes the enqueued operations. Do(context.Context) error }
RegistrationBuilder allows batching tunnel (un)registrations. Can be reused after Do is called.
type Registry ¶
type Registry struct {
// contains filtered or unexported fields
}
func NewRegistry ¶
func (*Registry) FindTunnel ¶
func (*Registry) HandleTunnel ¶
func (r *Registry) HandleTunnel(ageCtx context.Context, agentInfo *api.AgentInfo, server grpc.BidiStreamingServer[rpc.ConnectRequest, rpc.ConnectResponse]) error
func (*Registry) KASURLsByAgentID ¶
type Tracker ¶
type Tracker interface { Registerer Querier }
type TunnelFinder ¶ added in v17.1.0
Click to show internal directories.
Click to hide internal directories.