From 4f2850b355f788199d6270e9c4862188340ff797 Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Fri, 12 Jan 2024 18:33:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20server.Server=20=E5=9C=A8=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=20Shutdown=20=E6=97=B6=E5=B0=86=E4=BC=9A=E7=AD=89?= =?UTF-8?q?=E5=BE=85=E6=89=80=E6=9C=89=E6=B6=88=E6=81=AF=E5=88=86=E5=8F=91?= =?UTF-8?q?=E5=99=A8=E8=A2=AB=E9=87=8A=E6=94=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/server.go | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/server/server.go b/server/server.go index bcf1082..47d69ed 100644 --- a/server/server.go +++ b/server/server.go @@ -191,7 +191,7 @@ func (srv *Server) shutdown(err error) { var infoCount int for srv.messageCounter.Load() > 0 { - if infoCount%10 == 0 { + if infoCount%10 == 0 || infoCount == 0 { log.Info("Server", log.Any("network", srv.network), log.String("listen", srv.addr), @@ -202,7 +202,28 @@ func (srv *Server) shutdown(err error) { time.Sleep(time.Second) infoCount++ } + dispatcherMgrStopSignal := make(chan struct{}) + go func(srv *Server, c <-chan struct{}) { + var infoCount int + for { + select { + case <-c: + return + case <-time.After(time.Second): + if infoCount%10 == 0 || infoCount == 0 { + log.Info("Server", + log.Any("network", srv.network), + log.String("listen", srv.addr), + log.String("action", "shutdown"), + log.String("state", "waiting"), + log.Int64("dispatcher", srv.dispatcherMgr.GetDispatcherNum())) + } + infoCount++ + } + } + }(srv, dispatcherMgrStopSignal) srv.dispatcherMgr.Wait() + close(dispatcherMgrStopSignal) if srv.multiple == nil { srv.OnStopEvent() }