You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

104 lines
2.4 KiB
Go

package lifecycle
// ServerLifecycleHook 服务器生命周期钩子
type ServerLifecycleHook interface {
// OnInit 服务器初始化时调用
OnInit() error
// OnStart 服务器启动时调用
OnStart() error
// OnStop 服务器停止时调用
OnStop() error
}
// ConnectionLifecycleHook 连接生命周期钩子
type ConnectionLifecycleHook interface {
// OnOpen 连接打开时调用
OnOpen(connID string, remoteAddr string) error
// OnTraffic 数据到达时调用
OnTraffic(connID string, data []byte) error
// OnClose 连接关闭时调用
OnClose(connID string, err error) error
// OnError 连接错误时调用
OnError(connID string, err error) error
}
// HookFunc 钩子函数类型
type HookFunc func() error
// ServerHookFunc 服务器钩子函数
type ServerHookFunc struct {
OnInitFunc HookFunc
OnStartFunc HookFunc
OnStopFunc HookFunc
}
// OnInit 实现ServerLifecycleHook接口
func (f *ServerHookFunc) OnInit() error {
if f.OnInitFunc != nil {
return f.OnInitFunc()
}
return nil
}
// OnStart 实现ServerLifecycleHook接口
func (f *ServerHookFunc) OnStart() error {
if f.OnStartFunc != nil {
return f.OnStartFunc()
}
return nil
}
// OnStop 实现ServerLifecycleHook接口
func (f *ServerHookFunc) OnStop() error {
if f.OnStopFunc != nil {
return f.OnStopFunc()
}
return nil
}
// ConnectionHookFunc 连接钩子函数
type ConnectionHookFunc struct {
OnOpenFunc func(connID string, remoteAddr string) error
OnTrafficFunc func(connID string, data []byte) error
OnCloseFunc func(connID string, err error) error
OnErrorFunc func(connID string, err error) error
}
// OnOpen 实现ConnectionLifecycleHook接口
func (f *ConnectionHookFunc) OnOpen(connID string, remoteAddr string) error {
if f.OnOpenFunc != nil {
return f.OnOpenFunc(connID, remoteAddr)
}
return nil
}
// OnTraffic 实现ConnectionLifecycleHook接口
func (f *ConnectionHookFunc) OnTraffic(connID string, data []byte) error {
if f.OnTrafficFunc != nil {
return f.OnTrafficFunc(connID, data)
}
return nil
}
// OnClose 实现ConnectionLifecycleHook接口
func (f *ConnectionHookFunc) OnClose(connID string, err error) error {
if f.OnCloseFunc != nil {
return f.OnCloseFunc(connID, err)
}
return nil
}
// OnError 实现ConnectionLifecycleHook接口
func (f *ConnectionHookFunc) OnError(connID string, err error) error {
if f.OnErrorFunc != nil {
return f.OnErrorFunc(connID, err)
}
return nil
}