feat: 支持通过 server.Server.RegStopEvent() 函数注册服务器关闭事件
This commit is contained in:
parent
7065448ddf
commit
18b9598f5a
|
@ -12,6 +12,7 @@ import (
|
||||||
|
|
||||||
type StartBeforeEventHandle func(srv *Server)
|
type StartBeforeEventHandle func(srv *Server)
|
||||||
type StartFinishEventHandle func(srv *Server)
|
type StartFinishEventHandle func(srv *Server)
|
||||||
|
type StopEventHandle func(srv *Server)
|
||||||
type ConnectionReceivePacketEventHandle func(srv *Server, conn *Conn, packet []byte)
|
type ConnectionReceivePacketEventHandle func(srv *Server, conn *Conn, packet []byte)
|
||||||
type ConnectionReceiveWebsocketPacketEventHandle func(srv *Server, conn *Conn, packet []byte, messageType int)
|
type ConnectionReceiveWebsocketPacketEventHandle func(srv *Server, conn *Conn, packet []byte, messageType int)
|
||||||
type ConnectionOpenedEventHandle func(srv *Server, conn *Conn)
|
type ConnectionOpenedEventHandle func(srv *Server, conn *Conn)
|
||||||
|
@ -25,6 +26,7 @@ type event struct {
|
||||||
*Server
|
*Server
|
||||||
startBeforeEventHandles []StartBeforeEventHandle
|
startBeforeEventHandles []StartBeforeEventHandle
|
||||||
startFinishEventHandles []StartFinishEventHandle
|
startFinishEventHandles []StartFinishEventHandle
|
||||||
|
stopEventHandles []StopEventHandle
|
||||||
connectionReceivePacketEventHandles []ConnectionReceivePacketEventHandle
|
connectionReceivePacketEventHandles []ConnectionReceivePacketEventHandle
|
||||||
connectionReceiveWebsocketPacketEventHandles []ConnectionReceiveWebsocketPacketEventHandle
|
connectionReceiveWebsocketPacketEventHandles []ConnectionReceiveWebsocketPacketEventHandle
|
||||||
connectionOpenedEventHandles []ConnectionOpenedEventHandle
|
connectionOpenedEventHandles []ConnectionOpenedEventHandle
|
||||||
|
@ -38,6 +40,18 @@ type event struct {
|
||||||
consoleCommandEventHandleInitOnce sync.Once
|
consoleCommandEventHandleInitOnce sync.Once
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RegStopEvent 服务器停止时将立即执行被注册的事件处理函数
|
||||||
|
func (slf *event) RegStopEvent(handle StopEventHandle) {
|
||||||
|
slf.stopEventHandles = append(slf.stopEventHandles, handle)
|
||||||
|
log.Info("Server", zap.String("RegEvent", runtimes.CurrentRunningFuncName()), zap.String("handle", reflect.TypeOf(handle).String()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *event) OnStopEvent() {
|
||||||
|
for _, handle := range slf.stopEventHandles {
|
||||||
|
handle(slf.Server)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// RegConsoleCommandEvent 控制台收到指令时将立即执行被注册的事件处理函数
|
// RegConsoleCommandEvent 控制台收到指令时将立即执行被注册的事件处理函数
|
||||||
// - 默认将注册 "exit", "quit", "close", "shutdown", "EXIT", "QUIT", "CLOSE", "SHUTDOWN" 指令作为关闭服务器的指令
|
// - 默认将注册 "exit", "quit", "close", "shutdown", "EXIT", "QUIT", "CLOSE", "SHUTDOWN" 指令作为关闭服务器的指令
|
||||||
// - 可通过注册默认指令进行默认行为的覆盖
|
// - 可通过注册默认指令进行默认行为的覆盖
|
||||||
|
|
|
@ -364,6 +364,7 @@ func (slf *Server) Ticker() *timer.Ticker {
|
||||||
|
|
||||||
// Shutdown 停止运行服务器
|
// Shutdown 停止运行服务器
|
||||||
func (slf *Server) Shutdown(err error, stack ...string) {
|
func (slf *Server) Shutdown(err error, stack ...string) {
|
||||||
|
slf.OnStopEvent()
|
||||||
defer func() {
|
defer func() {
|
||||||
if slf.multipleRuntimeErrorChan != nil {
|
if slf.multipleRuntimeErrorChan != nil {
|
||||||
slf.multipleRuntimeErrorChan <- err
|
slf.multipleRuntimeErrorChan <- err
|
||||||
|
|
Loading…
Reference in New Issue