服务器启动事件
This commit is contained in:
parent
2e4a48e0a5
commit
3a26f3671a
|
@ -7,41 +7,41 @@ import (
|
|||
"reflect"
|
||||
)
|
||||
|
||||
type ServerStartBeforeEventHandle func(srv *Server)
|
||||
type ServerStartFinishEventHandle func(srv *Server)
|
||||
type StartBeforeEventHandle func(srv *Server)
|
||||
type StartFinishEventHandle func(srv *Server)
|
||||
type ConnectionReceivePacketEventHandle func(conn *Conn, packet []byte)
|
||||
type ConnectionOpenedEventHandle func(conn *Conn)
|
||||
type ConnectionClosedEventHandle func(conn *Conn)
|
||||
|
||||
type event struct {
|
||||
*Server
|
||||
serverStartBeforeEventHandles []ServerStartBeforeEventHandle
|
||||
serverStartFinishEventHandles []ServerStartFinishEventHandle
|
||||
startBeforeEventHandles []StartBeforeEventHandle
|
||||
startFinishEventHandles []StartFinishEventHandle
|
||||
connectionReceivePacketEventHandles []ConnectionReceivePacketEventHandle
|
||||
connectionOpenedEventHandles []ConnectionOpenedEventHandle
|
||||
connectionClosedEventHandles []ConnectionClosedEventHandle
|
||||
}
|
||||
|
||||
// RegServerStartBeforeEvent 在服务器初始化完成启动前立刻执行被注册的事件处理函数
|
||||
func (slf *event) RegServerStartBeforeEvent(handle ServerStartBeforeEventHandle) {
|
||||
slf.serverStartBeforeEventHandles = append(slf.serverStartBeforeEventHandles, handle)
|
||||
// RegStartBeforeEvent 在服务器初始化完成启动前立刻执行被注册的事件处理函数
|
||||
func (slf *event) RegStartBeforeEvent(handle StartBeforeEventHandle) {
|
||||
slf.startBeforeEventHandles = append(slf.startBeforeEventHandles, handle)
|
||||
log.Info("Server", zap.String("RegEvent", runtimes.CurrentRunningFuncName()), zap.String("handle", reflect.TypeOf(handle).String()))
|
||||
}
|
||||
|
||||
func (slf *event) OnServerStartBeforeEvent() {
|
||||
for _, handle := range slf.serverStartBeforeEventHandles {
|
||||
func (slf *event) OnStartBeforeEvent() {
|
||||
for _, handle := range slf.startBeforeEventHandles {
|
||||
handle(slf.Server)
|
||||
}
|
||||
}
|
||||
|
||||
// RegServerStartFinishEvent 在服务器启动完成时将立刻执行被注册的事件处理函数
|
||||
func (slf *event) RegServerStartFinishEvent(handle ServerStartFinishEventHandle) {
|
||||
slf.serverStartFinishEventHandles = append(slf.serverStartFinishEventHandles, handle)
|
||||
// RegStartFinishEvent 在服务器启动完成时将立刻执行被注册的事件处理函数
|
||||
func (slf *event) RegStartFinishEvent(handle StartFinishEventHandle) {
|
||||
slf.startFinishEventHandles = append(slf.startFinishEventHandles, handle)
|
||||
log.Info("Server", zap.String("RegEvent", runtimes.CurrentRunningFuncName()), zap.String("handle", reflect.TypeOf(handle).String()))
|
||||
}
|
||||
|
||||
func (slf *event) OnServerStartFinishEvent() {
|
||||
for _, handle := range slf.serverStartFinishEventHandles {
|
||||
func (slf *event) OnStartFinishEvent() {
|
||||
for _, handle := range slf.startFinishEventHandles {
|
||||
handle(slf.Server)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -89,14 +89,14 @@ func (slf *Server) Run(addr string) error {
|
|||
}
|
||||
slf.grpcServer = grpc.NewServer()
|
||||
go func() {
|
||||
slf.OnServerStartBeforeEvent()
|
||||
slf.OnStartBeforeEvent()
|
||||
if err := slf.grpcServer.Serve(listener); err != nil {
|
||||
slf.PushMessage(MessageTypeError, err, MessageErrorActionShutdown)
|
||||
}
|
||||
}()
|
||||
case NetworkTCP, NetworkTCP4, NetworkTCP6, NetworkUdp, NetworkUdp4, NetworkUdp6, NetworkUnix:
|
||||
go connectionInitHandle(func() {
|
||||
slf.OnServerStartBeforeEvent()
|
||||
slf.OnStartBeforeEvent()
|
||||
if err := gnet.Serve(slf.gServer, protoAddr); err != nil {
|
||||
slf.PushMessage(MessageTypeError, err, MessageErrorActionShutdown)
|
||||
}
|
||||
|
@ -107,7 +107,7 @@ func (slf *Server) Run(addr string) error {
|
|||
return err
|
||||
}
|
||||
go connectionInitHandle(func() {
|
||||
slf.OnServerStartBeforeEvent()
|
||||
slf.OnStartBeforeEvent()
|
||||
for {
|
||||
session, err := listener.AcceptKCP()
|
||||
if err != nil {
|
||||
|
@ -141,7 +141,7 @@ func (slf *Server) Run(addr string) error {
|
|||
gin.SetMode(gin.ReleaseMode)
|
||||
}
|
||||
go func() {
|
||||
slf.OnServerStartBeforeEvent()
|
||||
slf.OnStartBeforeEvent()
|
||||
if err := slf.httpServer.Run(addr); err != nil {
|
||||
slf.PushMessage(MessageTypeError, err, MessageErrorActionShutdown)
|
||||
}
|
||||
|
@ -199,7 +199,7 @@ func (slf *Server) Run(addr string) error {
|
|||
}
|
||||
})
|
||||
go func() {
|
||||
slf.OnServerStartBeforeEvent()
|
||||
slf.OnStartBeforeEvent()
|
||||
if err := http.ListenAndServe(slf.addr, nil); err != nil {
|
||||
slf.PushMessage(MessageTypeError, err, MessageErrorActionShutdown)
|
||||
}
|
||||
|
@ -216,7 +216,7 @@ func (slf *Server) Run(addr string) error {
|
|||
zap.String("listen", slf.addr),
|
||||
)
|
||||
log.Info("Server", zap.String("Minotaur Server", "===================================================================="))
|
||||
slf.OnServerStartFinishEvent()
|
||||
slf.OnStartFinishEvent()
|
||||
systemSignal := make(chan os.Signal, 1)
|
||||
signal.Notify(systemSignal, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
|
||||
select {
|
||||
|
@ -224,7 +224,7 @@ func (slf *Server) Run(addr string) error {
|
|||
slf.Shutdown(nil)
|
||||
}
|
||||
} else {
|
||||
slf.OnServerStartFinishEvent()
|
||||
slf.OnStartFinishEvent()
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
Loading…
Reference in New Issue