Documentation ¶
Index ¶
- func SetRoutingMetadata(md metadata.MD, agentID int64) metadata.MD
- type AgentFinder
- type AggregatingQuerier
- type Handler
- type Plugin
- func (p *Plugin) FindReadyGateway(ctx context.Context, log *slog.Logger, method string) (tunserver.ReadyGateway, *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
- func (t *RedisTracker) GC(ctx context.Context, agentIDs []int64) (int, error)
- func (t *RedisTracker) KASURLsByAgentID(ctx context.Context, agentID int64) ([]string, error)
- func (t *RedisTracker) Refresh(ctx context.Context, ttl time.Duration, agentIDs []int64) error
- func (t *RedisTracker) RegisterTunnel(ctx context.Context, ttl time.Duration, agentID int64) error
- func (t *RedisTracker) UnregisterTunnel(ctx context.Context, agentID int64) error
- type Registerer
- 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) ([]string, error)
- func (r *Registry) Run(ctx context.Context) error
- type Tracker
- type TunnelFinder
Constants ¶
This section is empty.
Variables ¶
This section is empty.
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) []string
func (*AggregatingQuerier) PollGatewayURLs ¶
func (q *AggregatingQuerier) PollGatewayURLs(ctx context.Context, agentID int64, cb tunserver.PollGatewayURLsCallback)
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 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, gatewayQuerier tunserver.PollingGatewayURLQuerier, agentFinder AgentFinder, tunnelRegistry TunnelFinder, tracer trace.Tracer, meter otelmetric.Meter, ownPrivateAPIURL string, 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 NewRedisTracker(client rueidis.Client, agentKeyPrefix string, ownPrivateAPIURL string, m otelmetric.Meter, log *slog.Logger) (*RedisTracker, error)
func (*RedisTracker) KASURLsByAgentID ¶
func (*RedisTracker) RegisterTunnel ¶
func (*RedisTracker) UnregisterTunnel ¶
func (t *RedisTracker) UnregisterTunnel(ctx context.Context, agentID int64) error
type Registerer ¶
type Registerer interface { // RegisterTunnel registers tunnel with the tracker. RegisterTunnel(ctx context.Context, ttl time.Duration, agentID int64) error // UnregisterTunnel unregisters tunnel with the tracker. UnregisterTunnel(ctx context.Context, agentID int64) error // GC deletes expired tunnels from the underlying storage. GC(ctx context.Context, agentIDs []int64) (int, error) // Refresh refreshes registered tunnels in the underlying storage. Refresh(ctx context.Context, ttl time.Duration, agentIDs []int64) error }
Registerer allows to register and unregister tunnels. Caller is responsible for periodically calling GC() and Refresh(). Not safe for concurrent use.
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.