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
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
|
|
}
|
|
|