From d13053c24cc3dd1c031f1c3d6e594a95a9650fd9 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 22 Mar 2024 15:44:29 +0800 Subject: [PATCH] 1 --- server/matchserver/common/types.go | 1 + server/matchserver/listener/handlermgr.go | 2 +- server/matchserver/listener/wsplistener.go | 4 ++++ server/matchserver/player/player.go | 1 + server/matchserver/player/playermgr.go | 9 ++------- server/matchserver/team/matchmgr.go | 3 +++ 6 files changed, 12 insertions(+), 8 deletions(-) diff --git a/server/matchserver/common/types.go b/server/matchserver/common/types.go index 39fa7c2d..ae148ea6 100644 --- a/server/matchserver/common/types.go +++ b/server/matchserver/common/types.go @@ -120,6 +120,7 @@ type Player interface { type PlayerMgr interface { ProcessCMMsg(*cs.CsNetMsgHandler, *f5.MsgHdr) GetPlayerBySocket(f5.WspCliConn) Player + OnSocketClose(f5.WspCliConn) } type MatchMgr interface { diff --git a/server/matchserver/listener/handlermgr.go b/server/matchserver/listener/handlermgr.go index 5031937d..4287c2c3 100644 --- a/server/matchserver/listener/handlermgr.go +++ b/server/matchserver/listener/handlermgr.go @@ -12,8 +12,8 @@ type HandlerMgr struct { func (this *HandlerMgr) Init() { ss.RegHandlerId(int(ss.SSMessageIdE__SS_Ping), constant.WSP_LISTENER_HANDLER_ID) + ss.RegHandlerId(int(ss.SSMessageIdE__SS_WSP_SocketDisconnect), constant.WSP_LISTENER_HANDLER_ID) - ss.RegHandlerId(int(ss.SSMessageIdE__SS_WSP_SocketDisconnect), constant.PLAYER_MGR_HANDLER_ID) cs.RegHandlerId(int(cs.CMMessageIdE__CMPing), constant.PLAYER_MGR_HANDLER_ID) cs.RegHandlerId(int(cs.CMMessageIdE__CMLogin), constant.PLAYER_MGR_HANDLER_ID) cs.RegHandlerId(int(cs.CMMessageIdE__CMReconnect), constant.PLAYER_MGR_HANDLER_ID) diff --git a/server/matchserver/listener/wsplistener.go b/server/matchserver/listener/wsplistener.go index d76bdc8c..6da8787c 100644 --- a/server/matchserver/listener/wsplistener.go +++ b/server/matchserver/listener/wsplistener.go @@ -43,6 +43,10 @@ func (this *WSPListener) SS_ping(hdr *f5.MsgHdr, msg *ss.SS_Ping) { this.SendProxyMsg(hdr.Conn, 0, &rspMsg) } +func (this *WSPListener) SS_WSP_SocketDisconnect(hdr *f5.MsgHdr, msg *ss.SS_WSP_SocketDisconnect) { + GetPlayerMgr().OnSocketClose(hdr.GetSocket()) +} + func (this *WSPListener) accept() { fmt.Println("accpet") for { diff --git a/server/matchserver/player/player.go b/server/matchserver/player/player.go index 09ba607b..9643899d 100644 --- a/server/matchserver/player/player.go +++ b/server/matchserver/player/player.go @@ -83,6 +83,7 @@ func (this *player) GetSocket() f5.WspCliConn { func (this *player) onOffline(){ this.socket.Reset() + this.GetTeam().Leave(this) } func (this *player) reBind(socket f5.WspCliConn) { diff --git a/server/matchserver/player/playermgr.go b/server/matchserver/player/playermgr.go index a67f8af8..e5457c33 100644 --- a/server/matchserver/player/playermgr.go +++ b/server/matchserver/player/playermgr.go @@ -12,7 +12,6 @@ import ( "mt" "net" "q5" - "ss" ) type pendingLoginRequest struct { @@ -55,7 +54,7 @@ func (this *playerMgr) Init() { } } for socket, _ := range deletedPlayers { - this.onSocketClose(socket) + this.OnSocketClose(socket) } }) } @@ -296,10 +295,6 @@ func (this *playerMgr) genSeqId() int64 { return reqId } -func (this *playerMgr) SS_WSP_SocketDisconnect(hdr *f5.MsgHdr, msg *ss.SS_WSP_SocketDisconnect) { - this.onSocketClose(hdr.GetSocket()) -} - func (this *playerMgr) CMReconnect(hdr *f5.MsgHdr, msg *cs.CMReconnect) { hum := this.internalGetPlayerBySocket(hdr.GetSocket()) rspMsg := &cs.SMReconnect{} @@ -332,7 +327,7 @@ func (this *playerMgr) CMReconnect(hdr *f5.MsgHdr, msg *cs.CMReconnect) { GetWspListener().SendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg) } -func (this *playerMgr) onSocketClose(conn f5.WspCliConn) { +func (this *playerMgr) OnSocketClose(conn f5.WspCliConn) { hum := this.internalGetPlayerBySocket(conn) if hum == nil { return diff --git a/server/matchserver/team/matchmgr.go b/server/matchserver/team/matchmgr.go index 34805d0c..65b915f7 100644 --- a/server/matchserver/team/matchmgr.go +++ b/server/matchserver/team/matchmgr.go @@ -82,6 +82,7 @@ func (this *matchMgr) mustBeZn(key int64) *q5.ListHead { func (this *matchMgr) execMatch(m *matchingInfo) { if q5.GetTickCount() - m.addTick > 1000 * 7 { + m.entry.DelInit() f5.GetTimer().DeleteRunningTimer() m.team.setMatchOk(nil) startTime := f5.GetApp().GetNowSeconds() @@ -111,6 +112,8 @@ func (this *matchMgr) execMatch(m *matchingInfo) { func (this *matchMgr) onMatchOk(m *matchingInfo) { delete(this.teamUuidHash, m.team.GetTeamUuid()) delete(this.teamUuidHash, m.matchOk.team.GetTeamUuid()) + m.entry.DelInit() + m.matchOk.entry.DelInit() f5.GetTimer().DeleteRunningTimer() if !m.matchOk.matchTimerWp.Expired() {