Documentation ¶
Index ¶
- func RunGrace(ser Server, l net.Listener, timeout time.Duration) error
- type Hydra
- func (h *Hydra) BindListener(p Protocol, ln Listener)
- func (h *Hydra) BindServer(p Protocol, ser Server)
- func (h *Hydra) GetDefaultListener() net.Listener
- func (h *Hydra) Listen(p Protocol) net.Listener
- func (h *Hydra) Serve(listener net.Listener) error
- func (h *Hydra) SetDefaultServer(ser Server)
- func (h *Hydra) Shutdown(ctx context.Context) error
- type Listener
- type Logger
- type Options
- type Protocol
- type Server
- type Starter
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Hydra ¶
type Hydra struct { // Opts 配置选项,可选 Opts *Options // DefaultListener 未识别的协议,可选 // 若未设置,在运行时会自动初始化 DefaultListener Listener // contains filtered or unexported fields }
Hydra 识别多协议的 fixedListenerServer
func (*Hydra) BindListener ¶
BindListener 绑定协议和 Listener 解析成功的 Conn 会发送到该 Listener
func (*Hydra) BindServer ¶
BindServer 绑定协议和 Server
func (*Hydra) GetDefaultListener ¶
GetDefaultListener 未知协议的连接
func (*Hydra) SetDefaultServer ¶
SetDefaultServer 绑定未知协议对应的 Server
type Options ¶
type Options struct { ListerChanSize int AcceptTimeout time.Duration OnAcceptError func(err error) }
func (*Options) GetAcceptTimeout ¶
func (*Options) GetListerChanSize ¶
type Protocol ¶
type Protocol interface { // Name 协议名字 Name() string // MinLen 为最小长度,用于做非判断( MustNot ) MinLen() int // MustNot 通过 MinLen 长度的 header 判断,一定不是该协议 // 当确定不是该协议的时候,返回 true // 若不确定,应该返回 false MustNot(header []byte) bool // MaxLen 最大长度,用于明确的判断不是该协议 // 应确保 MaxLen >= MinLen > 0 MaxLen() int // Is 通过 MaxLen 长度的 header 判断是否该协议 Is(header []byte) bool }
Protocol 协议接口定义
Click to show internal directories.
Click to hide internal directories.