type Tunnel …
type dialResult …
type pendingDial …
type pendingDialManager …
func (p *pendingDialManager) add(dialID int64, pd pendingDial) { … }
func (p *pendingDialManager) remove(dialID int64) { … }
func (p *pendingDialManager) get(dialID int64) (pendingDial, bool) { … }
type connectionManager …
func (cm *connectionManager) add(connID int64, c *conn) { … }
func (cm *connectionManager) remove(connID int64) { … }
func (cm *connectionManager) get(connID int64) (*conn, bool) { … }
func (cm *connectionManager) closeAll() { … }
type grpcTunnel …
type clientConn …
var _ …
var Metrics …
func CreateSingleUseGrpcTunnel(tunnelCtx context.Context, address string, opts ...grpc.DialOption) (Tunnel, error) { … }
func CreateSingleUseGrpcTunnelWithContext(createCtx, tunnelCtx context.Context, address string, opts ...grpc.DialOption) (Tunnel, error) { … }
func newUnstartedTunnel(stream client.ProxyService_ProxyClient, c clientConn) *grpcTunnel { … }
func (t *grpcTunnel) updateMetric(status metrics.ClientConnectionStatus) { … }
func (t *grpcTunnel) closeMetric() { … }
func (t *grpcTunnel) serve(tunnelCtx context.Context) { … }
func (t *grpcTunnel) DialContext(requestCtx context.Context, protocol, address string) (net.Conn, error) { … }
func (t *grpcTunnel) dialContext(requestCtx context.Context, protocol, address string) (net.Conn, error) { … }
func (t *grpcTunnel) Done() <-chan struct{ … }
func (t *grpcTunnel) sendCloseRequest(connID int64) error { … }
func (t *grpcTunnel) sendDialClose(dialID int64) error { … }
func (t *grpcTunnel) closeTunnel() { … }
func (t *grpcTunnel) isClosing() bool { … }
func (t *grpcTunnel) Send(pkt *client.Packet) error { … }
func (t *grpcTunnel) Recv() (*client.Packet, error) { … }
func GetDialFailureReason(err error) (isDialFailure bool, reason metrics.DialFailureReason) { … }
type dialFailure …
func (df *dialFailure) Error() string { … }