tcp

package
v2.2.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 8, 2020 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Conn

type Conn struct {
	// Peeked are the bytes that have been read from Conn for the
	// purposes of route matching, but have not yet been consumed
	// by Read calls. It set to nil by Read when fully consumed.
	Peeked []byte

	// Conn is the underlying connection.
	// It can be type asserted against *net.TCPConn or other types
	// as needed. It should not be read from directly unless
	// Peeked is nil.
	WriteCloser
}

Conn is a connection proxy that handles Peeked bytes.

func (*Conn) Read

func (c *Conn) Read(p []byte) (n int, err error)

Read reads bytes from the connection (using the buffer prior to actually reading).

type Handler

type Handler interface {
	ServeTCP(conn WriteCloser)
}

Handler is the TCP Handlers interface.

type HandlerFunc

type HandlerFunc func(conn WriteCloser)

The HandlerFunc type is an adapter to allow the use of ordinary functions as handlers.

func (HandlerFunc) ServeTCP

func (f HandlerFunc) ServeTCP(conn WriteCloser)

ServeTCP serves tcp.

type HandlerSwitcher

type HandlerSwitcher struct {
	// contains filtered or unexported fields
}

HandlerSwitcher is a TCP handler switcher.

func (*HandlerSwitcher) ServeTCP

func (s *HandlerSwitcher) ServeTCP(conn WriteCloser)

ServeTCP forwards the TCP connection to the current active handler.

func (*HandlerSwitcher) Switch

func (s *HandlerSwitcher) Switch(handler Handler)

Switch sets the new TCP handler to use for new connections.

type Proxy

type Proxy struct {
	// contains filtered or unexported fields
}

Proxy forwards a TCP request to a TCP service.

func NewProxy

func NewProxy(address string, terminationDelay time.Duration) (*Proxy, error)

NewProxy creates a new Proxy.

func (*Proxy) ServeTCP

func (p *Proxy) ServeTCP(conn WriteCloser)

ServeTCP forwards the connection to a service.

type Router

type Router struct {
	// contains filtered or unexported fields
}

Router is a TCP router.

func (*Router) AddCatchAllNoTLS

func (r *Router) AddCatchAllNoTLS(handler Handler)

AddCatchAllNoTLS defines the fallback tcp handler.

func (*Router) AddRoute

func (r *Router) AddRoute(sniHost string, target Handler)

AddRoute defines a handler for a given sniHost (* is the only valid option).

func (*Router) AddRouteHTTPTLS

func (r *Router) AddRouteHTTPTLS(sniHost string, config *tls.Config)

AddRouteHTTPTLS defines the matching tlsConfig for a given sniHost.

func (*Router) AddRouteTLS

func (r *Router) AddRouteTLS(sniHost string, target Handler, config *tls.Config)

AddRouteTLS defines a handler for a given sniHost and sets the matching tlsConfig.

func (*Router) GetConn

func (r *Router) GetConn(conn WriteCloser, peeked string) WriteCloser

GetConn creates a connection proxy with a peeked string.

func (*Router) GetHTTPHandler

func (r *Router) GetHTTPHandler() http.Handler

GetHTTPHandler gets the attached http handler.

func (*Router) GetHTTPSHandler

func (r *Router) GetHTTPSHandler() http.Handler

GetHTTPSHandler gets the attached https handler.

func (*Router) HTTPForwarder

func (r *Router) HTTPForwarder(handler Handler)

HTTPForwarder sets the tcp handler that will forward the connections to an http handler.

func (*Router) HTTPHandler

func (r *Router) HTTPHandler(handler http.Handler)

HTTPHandler attaches http handlers on the router.

func (*Router) HTTPSForwarder

func (r *Router) HTTPSForwarder(handler Handler)

HTTPSForwarder sets the tcp handler that will forward the TLS connections to an http handler.

func (*Router) HTTPSHandler

func (r *Router) HTTPSHandler(handler http.Handler, config *tls.Config)

HTTPSHandler attaches https handlers on the router.

func (*Router) ServeTCP

func (r *Router) ServeTCP(conn WriteCloser)

ServeTCP forwards the connection to the right TCP/HTTP handler.

type TLSHandler

type TLSHandler struct {
	Next   Handler
	Config *tls.Config
}

TLSHandler handles TLS connections.

func (*TLSHandler) ServeTCP

func (t *TLSHandler) ServeTCP(conn WriteCloser)

ServeTCP terminates the TLS connection.

type WRRLoadBalancer

type WRRLoadBalancer struct {
	// contains filtered or unexported fields
}

WRRLoadBalancer is a naive RoundRobin load balancer for TCP services.

func NewWRRLoadBalancer

func NewWRRLoadBalancer() *WRRLoadBalancer

NewWRRLoadBalancer creates a new WRRLoadBalancer.

func (*WRRLoadBalancer) AddServer

func (b *WRRLoadBalancer) AddServer(serverHandler Handler)

AddServer appends a server to the existing list.

func (*WRRLoadBalancer) AddWeightServer

func (b *WRRLoadBalancer) AddWeightServer(serverHandler Handler, weight *int)

AddWeightServer appends a server to the existing list with a weight.

func (*WRRLoadBalancer) ServeTCP

func (b *WRRLoadBalancer) ServeTCP(conn WriteCloser)

ServeTCP forwards the connection to the right service.

type WriteCloser

type WriteCloser interface {
	net.Conn
	// CloseWrite on a network connection, indicates that the issuer of the call
	// has terminated sending on that connection.
	// It corresponds to sending a FIN packet.
	CloseWrite() error
}

WriteCloser describes a net.Conn with a CloseWrite method.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL