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 }