endpoint

package
v0.9.4 Latest Latest
Warning

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

Go to latest
Published: Mar 10, 2022 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	WithDecodeHook = func(decodeHook mapstructure.DecodeHookFunc) UnmarshalOption {
		return func(cfg *mapstructure.DecoderConfig) {
			cfg.DecodeHook = decodeHook
		}
	}
	WithErrorUnused = UnmarshalOption(func(cfg *mapstructure.DecoderConfig) {
		cfg.ErrorUnused = true
	})
	WithZeroFields = UnmarshalOption(func(cfg *mapstructure.DecoderConfig) {
		cfg.ZeroFields = true
	})
	WithWeaklyTypedInput = UnmarshalOption(func(cfg *mapstructure.DecoderConfig) {
		cfg.WeaklyTypedInput = true
	})
	WithSquash = UnmarshalOption(func(cfg *mapstructure.DecoderConfig) {
		cfg.Squash = true
	})
)
View Source
var (
	ErrUDPMultiplexer           = errors.New("UDP listeners don't support multiplexing")
	ErrMultiplexingNotSupported = errors.New("not all handlers do support multiplexing")
	ErrUnsupportedProtocol      = errors.New("protocol not supported")
)
View Source
var (
	ErrUnknownHandlerRef = errors.New("no handler for given key registered")
	ErrNoEndpoints       = errors.New("no endpoints configured in ListenerGroup")
)
View Source
var (
	ErrNoSuchGroup = errors.New("no group with given name configured")
)

Functions

func IgnoreShutdownError added in v0.9.0

func IgnoreShutdownError(err error) error

Types

type ErrorHandler added in v0.9.0

type ErrorHandler interface {
	OnError(err error)
}

type ErrorHandlerFunc added in v0.9.0

type ErrorHandlerFunc func(err error)

func (ErrorHandlerFunc) OnError added in v0.9.0

func (f ErrorHandlerFunc) OnError(err error)

type Group added in v0.9.0

type Group struct {
	Names    []string
	Handlers map[string]MultiplexHandler
}

func (Group) IsEmpty added in v0.9.0

func (g Group) IsEmpty() bool

type GroupInfo added in v0.9.0

type GroupInfo struct {
	Name      string
	Endpoints []string
	Serving   bool
}

type HandlerProvider added in v0.5.1

type HandlerProvider func() ProtocolHandler

type HandlerReference added in v0.2.0

type HandlerReference string

func (HandlerReference) ToLower added in v0.2.0

func (h HandlerReference) ToLower() HandlerReference

type HandlerRegistry added in v0.2.0

type HandlerRegistry interface {
	RegisterHandler(handlerRef HandlerReference, handlerProvider HandlerProvider)
	AvailableHandlers() []HandlerReference
	HandlerForName(handlerRef HandlerReference) (ProtocolHandler, bool)
}

func NewHandlerRegistry added in v0.2.0

func NewHandlerRegistry() HandlerRegistry

type Host added in v0.9.0

type Host interface {
	ConfiguredGroups() []GroupInfo
	ServeGroup(ctx context.Context, groupName string) error
	ServeGroups(ctx context.Context) error
	Shutdown(ctx context.Context) error
	ShutdownGroup(ctx context.Context, groupName string) error
}

type HostBuilder added in v0.9.0

type HostBuilder interface {
	ConfigureGroup(spec ListenerSpec) (err error)
	ConfiguredGroups() []GroupInfo
}
type Link struct {
	Listener   net.Listener
	PacketConn net.PacketConn
}

type ListenerEndpoint added in v0.9.0

type ListenerEndpoint struct {
	Name    string
	TLS     bool
	Handler ProtocolHandler
	Uplink  Uplink
	Options map[string]interface{}
}

func NewListenerEndpoint added in v0.9.0

func NewListenerEndpoint(spec Spec, handler ProtocolHandler) *ListenerEndpoint

func (ListenerEndpoint) Close added in v0.9.0

func (le ListenerEndpoint) Close(ctx context.Context) (err error)

type ListenerGroup added in v0.9.0

type ListenerGroup struct {
	CloseTimeout time.Duration
	Name         string
	Unmanaged    bool
	Addr         net.Addr
	// contains filtered or unexported fields
}

func NewListenerGroup added in v0.9.0

func NewListenerGroup(spec ListenerSpec) (grp *ListenerGroup, err error)

func (*ListenerGroup) AddErrorHandler added in v0.9.0

func (lg *ListenerGroup) AddErrorHandler(eh ErrorHandler)

func (*ListenerGroup) ConfigureEndpoint added in v0.9.0

func (lg *ListenerGroup) ConfigureEndpoint(name string, le *ListenerEndpoint)

func (*ListenerGroup) ConfiguredEndpoints added in v0.9.0

func (lg *ListenerGroup) ConfiguredEndpoints() (eps []string)

func (*ListenerGroup) GroupByTLS added in v0.9.0

func (lg *ListenerGroup) GroupByTLS() (plainGrp, tlsGrp *Group, err error)

func (*ListenerGroup) Serve added in v0.9.0

func (lg *ListenerGroup) Serve(ctx context.Context) error

func (*ListenerGroup) SetupMux added in v0.9.0

func (lg *ListenerGroup) SetupMux(mux cmux.CMux, grp *Group)

func (*ListenerGroup) Shutdown added in v0.9.0

func (lg *ListenerGroup) Shutdown(ctx context.Context) (err error)

type ListenerSpec added in v0.2.0

type ListenerSpec struct {
	Name      string
	Protocol  string
	Address   string `mapstructure:"listenAddress"`
	Port      uint16
	Endpoints map[string]Spec
	Unmanaged bool
}

func (ListenerSpec) Addr added in v0.9.0

func (l ListenerSpec) Addr() (net.Addr, error)

type Mapping added in v0.6.0

type Mapping interface {
	MapTo(in interface{}) (interface{}, error)
}

type MappingFunc added in v0.6.0

type MappingFunc func(in interface{}) (interface{}, error)

func (MappingFunc) MapTo added in v0.6.0

func (m MappingFunc) MapTo(in interface{}) (interface{}, error)

type MultiplexHandler added in v0.2.0

type MultiplexHandler interface {
	ProtocolHandler
	Matchers() []cmux.Matcher
}

type MuxServer added in v0.9.0

type MuxServer interface {
	Serve() error
	Close()
	HandleError(cmux.ErrorHandler)
	SetReadTimeout(time.Duration)
}

type OptionByTypeDecoderBuilder added in v0.6.0

type OptionByTypeDecoderBuilder struct {
	OptionType reflect.Type
	Mappings   map[string]Mapping
}

func NewOptionByTypeDecoderBuilderFor added in v0.6.0

func NewOptionByTypeDecoderBuilderFor(opt interface{}) OptionByTypeDecoderBuilder

func (*OptionByTypeDecoderBuilder) AddMappingToMapper added in v0.6.0

func (o *OptionByTypeDecoderBuilder) AddMappingToMapper(
	typeName string,
	mapper Mapping,
) *OptionByTypeDecoderBuilder

func (*OptionByTypeDecoderBuilder) AddMappingToProvider added in v0.6.0

func (o *OptionByTypeDecoderBuilder) AddMappingToProvider(typeName string, provider func() interface{}) *OptionByTypeDecoderBuilder

func (*OptionByTypeDecoderBuilder) AddMappingToType added in v0.6.0

func (o *OptionByTypeDecoderBuilder) AddMappingToType(typeName string, targetType reflect.Type) *OptionByTypeDecoderBuilder

func (OptionByTypeDecoderBuilder) Build added in v0.6.0

type ProtocolHandler added in v0.2.0

type ProtocolHandler interface {
	Start(ctx context.Context, ss *StartupSpec) error
}

type Registration added in v0.2.0

type Registration func(registry HandlerRegistry) error

type Server added in v0.9.0

type Server struct {
	TLSConfig    *tls.Config
	ErrorHandler []ErrorHandler
	Logger       logging.Logger
	// contains filtered or unexported fields
}

func NewServer added in v0.9.0

func NewServer(logger logging.Logger, tlsConfig *tls.Config) *Server

func (*Server) ConfigureGroup added in v0.9.0

func (s *Server) ConfigureGroup(grp *ListenerGroup)

func (*Server) ConfiguredGroups added in v0.9.0

func (s *Server) ConfiguredGroups() []GroupInfo

func (*Server) ServeGroup added in v0.9.0

func (s *Server) ServeGroup(ctx context.Context, groupName string) error

func (*Server) ServeGroups added in v0.9.0

func (s *Server) ServeGroups(ctx context.Context) error

func (*Server) Shutdown added in v0.9.0

func (s *Server) Shutdown(ctx context.Context) error

func (*Server) ShutdownGroup added in v0.9.0

func (s *Server) ShutdownGroup(ctx context.Context, groupName string) error

func (*Server) ShutdownOnCancel added in v0.9.0

func (s *Server) ShutdownOnCancel(ctx context.Context)

type ServerBuilder added in v0.9.0

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

func NewServerBuilder added in v0.9.0

func NewServerBuilder(
	tlsConfig *tls.Config,
	registry HandlerRegistry,
	logger logging.Logger,
) *ServerBuilder

func (*ServerBuilder) ConfigureGroup added in v0.9.0

func (e *ServerBuilder) ConfigureGroup(spec ListenerSpec) (err error)

func (*ServerBuilder) ConfiguredGroups added in v0.9.0

func (e *ServerBuilder) ConfiguredGroups() []GroupInfo

func (*ServerBuilder) Server added in v0.9.0

func (e *ServerBuilder) Server() *Server

type Spec added in v0.2.0

type Spec struct {
	HandlerRef HandlerReference `mapstructure:"handler"`
	TLS        bool
	Handler    ProtocolHandler `mapstructure:"-"`
	Options    map[string]interface{}
}

type StartupSpec added in v0.9.0

type StartupSpec struct {
	Uplink
	Name    string
	Options map[string]interface{}
}

func NewStartupSpec added in v0.9.0

func NewStartupSpec(name string, uplink Uplink, opts map[string]interface{}) *StartupSpec

func (StartupSpec) UnmarshalOptions added in v0.9.0

func (s StartupSpec) UnmarshalOptions(cfg interface{}, opts ...UnmarshalOption) error

type StoppableHandler added in v0.9.0

type StoppableHandler interface {
	ProtocolHandler
	Stop(ctx context.Context) error
}

type UnmarshalOption added in v0.6.0

type UnmarshalOption func(cfg *mapstructure.DecoderConfig)
type Uplink struct {
	Addr       net.Addr
	Unmanaged  bool
	Listener   net.Listener
	PacketConn net.PacketConn
}
func NewUplink(conn interface{}) (u Uplink)

func (*Uplink) Close added in v0.2.0

func (u *Uplink) Close() (err error)

func (Uplink) IsTCP added in v0.9.0

func (u Uplink) IsTCP() bool

func (Uplink) IsUDP added in v0.9.0

func (u Uplink) IsUDP() bool

Jump to

Keyboard shortcuts

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