From b740255bb8ac187c52c822b9802386aee7c3b048 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B7=E5=8B=87?= Date: Sun, 8 Oct 2023 17:36:12 +0800 Subject: [PATCH 1/2] save --- server/hallserver/common/types.go | 5 +- server/hallserver/room/member.go | 18 ++-- server/hallserver/room/room.go | 154 +++++++++++++++--------------- server/hallserver/room/roommgr.go | 14 +-- server/hallserver/room/team.go | 16 ++-- server/imserver/app.go | 6 +- server/imserver/export.go | 1 - server/imserver/httplistener.go | 19 ---- 8 files changed, 108 insertions(+), 125 deletions(-) delete mode 100644 server/imserver/httplistener.go diff --git a/server/hallserver/common/types.go b/server/hallserver/common/types.go index b8f27459..54ea2c4e 100644 --- a/server/hallserver/common/types.go +++ b/server/hallserver/common/types.go @@ -4,8 +4,8 @@ import ( "net" "cs" - "ss" "f5" + "ss" proto "github.com/golang/protobuf/proto" ) @@ -42,11 +42,10 @@ type PlayerMgr interface { type WspListener interface { ProcessSSMMsg(*ss.SsNetMsgHandler, *f5.MsgHdr) - SendProxyMsg(net.Conn, uint16, proto.Message); + SendProxyMsg(net.Conn, uint16, proto.Message) } type HttpListener interface { - } type App interface { diff --git a/server/hallserver/room/member.go b/server/hallserver/room/member.go index 10dc3423..7f6fec08 100644 --- a/server/hallserver/room/member.go +++ b/server/hallserver/room/member.go @@ -1,21 +1,21 @@ package room import ( - "q5" - "f5" "cs" - "main/common" + "f5" "github.com/golang/protobuf/proto" + "main/common" + "q5" ) type member struct { - room *room - joinTime int64 - state int32 + room *room + joinTime int64 + state int32 closeGameStartNotify bool - teamEntry q5.ListHead - team *team - hum common.Player + teamEntry q5.ListHead + team *team + hum common.Player } func (this *member) init(room *room, hum common.Player) { diff --git a/server/hallserver/room/room.go b/server/hallserver/room/room.go index a5c2b0de..a502afaa 100644 --- a/server/hallserver/room/room.go +++ b/server/hallserver/room/room.go @@ -2,38 +2,38 @@ package room import ( "cs" - "q5" "f5" - "mt" + "github.com/golang/protobuf/proto" "main/common" "main/constant" - "github.com/golang/protobuf/proto" + "mt" + "q5" ) type room struct { cs.MsgHandlerImpl - roomId string + roomId string roomIdx int64 - entry q5.ListHead - config struct { - mapId int32 - zoneId int32 - nodeId int32 - passwd string + entry q5.ListHead + config struct { + mapId int32 + zoneId int32 + nodeId int32 + passwd string maxTeamNum int32 } - owner *member - roomState int32 - startTime int64 - startReason int32 - disbandTime int64 - disbandReason int32 - teamUuidHash map[string]*team - teamIdHash map[int32]*team - members map[string]*member - startTimer *f5.TimerWp - delayDeleteTimer *f5.TimerWp - attacher *f5.TimerAttacher + owner *member + roomState int32 + startTime int64 + startReason int32 + disbandTime int64 + disbandReason int32 + teamUuidHash map[string]*team + teamIdHash map[int32]*team + members map[string]*member + startTimer *f5.TimerWp + delayDeleteTimer *f5.TimerWp + attacher *f5.TimerAttacher gameStartNotifyMsg *cs.SMRoomGameStartNotify } @@ -54,8 +54,8 @@ func (this *room) init(roomId string, } func (this *room) unInit() { - for ; len(this.teamUuidHash) > 0; { - for _, t := range(this.teamUuidHash) { + for len(this.teamUuidHash) > 0 { + for _, t := range this.teamUuidHash { t.unInit() break } @@ -170,7 +170,7 @@ func (this *room) fillMFCurrentRoom(pb *cs.MFCurrentRoom) { pb.Owner = new(cs.MFMember) this.owner.fillMFMember(pb.Owner) q5.NewSlice(&pb.TeamList, 0, 10) - for _, t := range(this.teamUuidHash) { + for _, t := range this.teamUuidHash { pbT := &cs.MFTeam{} t.fillMFTeam(pbT) q5.AppendSlice(&pb.TeamList, pbT) @@ -266,7 +266,7 @@ func (this *room) CMKickoutTeam(hdr *f5.MsgHdr, msg *cs.CMKickoutTeam) { hum := hdr.Context.(common.Player) m := this.getMember(hum.GetAccountId()) t := this.getTeamByUuid(msg.GetTeamUuid()) - if m == this.owner && t != nil && t != m.team && this.roomState == ROOM_INIT_STATE{ + if m == this.owner && t != nil && t != m.team && this.roomState == ROOM_INIT_STATE { notifyMsg := &cs.SMRoomKickoutNotify{} this.broadcastMsg(notifyMsg) t.unInit() @@ -296,7 +296,7 @@ func (this *room) CMCloseNotify(hdr *f5.MsgHdr, msg *cs.CMCloseNotify) { } func (this *room) broadcastMsg(msg proto.Message) { - for _, m := range(this.members) { + for _, m := range this.members { if m.hum.GetRoom() == this { m.hum.SendMsg(msg) } @@ -324,7 +324,7 @@ func (this *room) doDisband(reason int32) { notifyMsg := &cs.SMRoomDisbandNotify{} notifyMsg.RoomId = proto.String(this.roomId) notifyMsg.Reason = proto.Int32(reason) - for _, m := range(this.members) { + for _, m := range this.members { if m.hum.GetRoom() == this { m.hum.SendMsg(notifyMsg) } @@ -338,9 +338,9 @@ func (this *room) doStart(reason int32) { this.startReason = ROOM_AUTO_START_TYPE f5.GetTimer().SetIntervalExWp( 1000, - func (e int32, args *q5.Args) { + func(e int32, args *q5.Args) { if e == q5.TIMER_EXEC_EVENT { - if f5.GetApp().GetNowSeconds() - this.startTime < + if f5.GetApp().GetNowSeconds()-this.startTime < int64(mt.Table.Config.Get().GetGameStartNotifyTime()) { this.notifyGameStart() } @@ -362,7 +362,7 @@ func (this *room) notifyGameStart() { if this.gameStartNotifyMsg == nil { this.genGameStartNotifyMsg() } - for _, m := range(this.members) { + for _, m := range this.members { if m.state == MEMBER_READY_STATE && m.hum.GetRoom() == this && !m.closeGameStartNotify { @@ -372,52 +372,54 @@ func (this *room) notifyGameStart() { } func (this *room) genGameStartNotifyMsg() { - if this.gameStartNotifyMsg == nil { - this.gameStartNotifyMsg = &cs.SMRoomGameStartNotify{} - this.gameStartNotifyMsg.ZoneId = proto.Int32(this.config.zoneId) - this.gameStartNotifyMsg.NodeId = proto.Int32(this.config.nodeId) - this.gameStartNotifyMsg.TeamUuid = proto.String(q5.ToString(this.roomIdx)) - startInfo := struct { - ZoneId int32 `json:"zone_id"` - NodeId int32 `json:"node_id"` - RoomUuid string `json:"room_uuid"` - StartTime int32 `json:"start_time"` - TeamList [] struct { - TeamUuid string `json:"team_uuid"` - Members [] struct { - AccountId string `json:"account_id"` - } `json:"members"` - } `json:"team_list"` - }{ - ZoneId: this.config.zoneId, - NodeId: this.config.nodeId, - RoomUuid: q5.ToString(this.roomIdx), - StartTime: int32(this.startTime), - } - q5.NewSlice(&startInfo.TeamList, 0, 10) - for _, t := range(this.teamUuidHash) { - if t.hasAlreadMember() { - ele := q5.NewSliceElement(&startInfo.TeamList) - ele.TeamUuid = t.teamUuid - q5.NewSlice(&ele.Members, 0, 4) - t.members.ForEach( - func (data interface{}) bool { - m := data.(*member) - if m.state == MEMBER_READY_STATE { - ele2 := q5.NewSliceElement(&ele.Members) - ele2.AccountId = m.hum.GetAccountId() - } - return true - }) - } - } - this.gameStartNotifyMsg.CustomRoomPayload = proto.String(q5.EncodeJson(&startInfo)) + if this.gameStartNotifyMsg != nil { + return } + + this.gameStartNotifyMsg = &cs.SMRoomGameStartNotify{} + this.gameStartNotifyMsg.ZoneId = proto.Int32(this.config.zoneId) + this.gameStartNotifyMsg.NodeId = proto.Int32(this.config.nodeId) + this.gameStartNotifyMsg.TeamUuid = proto.String(q5.ToString(this.roomIdx)) + startInfo := struct { + ZoneId int32 `json:"zone_id"` + NodeId int32 `json:"node_id"` + RoomUuid string `json:"room_uuid"` + StartTime int32 `json:"start_time"` + TeamList []struct { + TeamUuid string `json:"team_uuid"` + Members []struct { + AccountId string `json:"account_id"` + } `json:"members"` + } `json:"team_list"` + }{ + ZoneId: this.config.zoneId, + NodeId: this.config.nodeId, + RoomUuid: q5.ToString(this.roomIdx), + StartTime: int32(this.startTime), + } + q5.NewSlice(&startInfo.TeamList, 0, 10) + for _, t := range this.teamUuidHash { + if t.hasAlreadMember() { + ele := q5.NewSliceElement(&startInfo.TeamList) + ele.TeamUuid = t.teamUuid + q5.NewSlice(&ele.Members, 0, 4) + t.members.ForEach( + func(data interface{}) bool { + m := data.(*member) + if m.state == MEMBER_READY_STATE { + ele2 := q5.NewSliceElement(&ele.Members) + ele2.AccountId = m.hum.GetAccountId() + } + return true + }) + } + } + this.gameStartNotifyMsg.CustomRoomPayload = proto.String(q5.EncodeJson(&startInfo)) } func (this *room) canStart() bool { alreadyNum := 0 - for _, t := range(this.teamUuidHash) { + for _, t := range this.teamUuidHash { if t.hasAlreadMember() { alreadyNum++ } @@ -491,8 +493,8 @@ func (this *room) delayDeleteRoom() { panic("errror dealyDeleteRoom") } this.delayDeleteTimer = f5.GetTimer().SetTimeoutExWp( - 1000 * mt.Table.Config.Get().GetDelayDeleteTime(), - func (e int32, args *q5.Args) { + 1000*mt.Table.Config.Get().GetDelayDeleteTime(), + func(e int32, args *q5.Args) { if e == q5.TIMER_EXEC_EVENT { this.unInit() } @@ -508,8 +510,8 @@ func newRoom() *room { r.entry.Init(r) r.attacher = f5.GetTimer().NewTimerAttacher() r.startTimer = f5.GetTimer().SetTimeoutExWp( - 1000 * mt.Table.Config.Get().GetAutoStartTime(), - func (e int32, args *q5.Args) { + 1000*mt.Table.Config.Get().GetAutoStartTime(), + func(e int32, args *q5.Args) { if e == q5.TIMER_EXEC_EVENT { r.autoStart() } diff --git a/server/hallserver/room/roommgr.go b/server/hallserver/room/roommgr.go index 8601a3fc..862bcaa4 100644 --- a/server/hallserver/room/roommgr.go +++ b/server/hallserver/room/roommgr.go @@ -2,19 +2,19 @@ package room import ( "cs" - "q5" "f5" - "main/constant" - "main/common" "github.com/golang/protobuf/proto" + "main/common" + "main/constant" . "main/global" + "q5" ) type roomMgr struct { cs.MsgHandlerImpl currRoomId int32 - idHash map[string]*room - roomList q5.ListHead + idHash map[string]*room + roomList q5.ListHead } func (this *roomMgr) Init() { @@ -53,7 +53,7 @@ func (this *roomMgr) ProcessCMMsg(handler *cs.CsNetMsgHandler, hdr *f5.MsgHdr) { } case constant.ROOM_HANDLER_ID: hum := GetPlayerMgr().GetPlayerBySocket(hdr.GetSocket()) - if hum != nil && hum.GetRoom() != nil { + if hum != nil && hum.GetRoom() != nil { hdr.Context = hum cs.DispatchMsg(handler, hdr, hum.GetRoom().(*room)) } @@ -116,7 +116,7 @@ func (this *roomMgr) CMSearchRoom(hdr *f5.MsgHdr, msg *cs.CMSearchRoom) { sinceId := msg.GetSinceId() roomId := msg.GetRoomId() this.roomList.ForEach( - func (data interface{}) bool { + func(data interface{}) bool { r := data.(*room) if r.roomIdx > sinceId && r.viewable() { if roomId != "" && roomId != r.roomId { diff --git a/server/hallserver/room/team.go b/server/hallserver/room/team.go index 8e34907c..a843f956 100644 --- a/server/hallserver/room/team.go +++ b/server/hallserver/room/team.go @@ -1,16 +1,16 @@ package room import ( - "q5" "cs" "github.com/golang/protobuf/proto" + "q5" ) type team struct { - room *room - teamId int32 + room *room + teamId int32 teamUuid string - members q5.ListHead + members q5.ListHead } func (this *team) init(room *room, teamId int32, teamUuid string) { @@ -22,7 +22,7 @@ func (this *team) init(room *room, teamId int32, teamUuid string) { func (this *team) unInit() { this.members.ForEach( - func (data interface{}) bool { + func(data interface{}) bool { m := data.(*member) m.unInit() return true @@ -37,7 +37,7 @@ func (this *team) fillMFTeam(pb *cs.MFTeam) { pb.TeamUuid = proto.String(this.teamUuid) q5.NewSlice(&pb.Members, 0, 4) this.members.ForEach( - func (data interface{}) bool { + func(data interface{}) bool { m := data.(*member) pbM := &cs.MFMember{} m.fillMFMember(pbM) @@ -58,7 +58,7 @@ func (this *team) getMemberNum() int32 { func (this *team) hasAlreadMember() bool { ok := false this.members.ForEach( - func (data interface{}) bool { + func(data interface{}) bool { m := data.(*member) if m.state == MEMBER_READY_STATE { ok = true @@ -72,7 +72,7 @@ func (this *team) hasAlreadMember() bool { func (this *team) getOwnerCandidate() *member { var ownerCandidate *member this.members.ForEach( - func (data interface{}) bool { + func(data interface{}) bool { m := data.(*member) if m.hum.IsOnline() { ownerCandidate = m diff --git a/server/imserver/app.go b/server/imserver/app.go index ccdcd498..4eee0fed 100644 --- a/server/imserver/app.go +++ b/server/imserver/app.go @@ -28,11 +28,9 @@ func (this *App) Init() { chatMgr.init() cacheMgr.init() wspListener.init() - httpListener.init() } func (this *App) UnInit() { - httpListener.unInit() playerMgr.unInit() handlerMgr.unInit() wspListener.unInit() @@ -110,3 +108,7 @@ func (this *App) registerDataSources() { mt.Table.FriendDb.GetById(0).GetDatabase(), 30) } + +func (this *App) GetHttpListenPort() int32 { + return mt.Table.IMCluster.GetHttpListenPort() +} diff --git a/server/imserver/export.go b/server/imserver/export.go index d9c53dd7..28713eb7 100644 --- a/server/imserver/export.go +++ b/server/imserver/export.go @@ -4,7 +4,6 @@ var app = new(App) var wspListener = new(WSPListener) var playerMgr = new(PlayerMgr) var handlerMgr = new(HandlerMgr) -var httpListener = new(HttpListener) var friendMgr = new(FriendsMgr) var cacheMgr = new(CacheMgr) diff --git a/server/imserver/httplistener.go b/server/imserver/httplistener.go deleted file mode 100644 index 66a973c7..00000000 --- a/server/imserver/httplistener.go +++ /dev/null @@ -1,19 +0,0 @@ -package main - -import ( - "f5" - "mt" -) - -type HttpListener struct { - httpServer *f5.HttpServer -} - -func (this *HttpListener) init() { - this.httpServer = new (f5.HttpServer) - this.httpServer.Init("imserver.httplistener", 1000 * 10) - this.httpServer.Start(mt.Table.IMCluster.GetHttpListenPort()) -} - -func (this *HttpListener) unInit() { -} From 22031c44ef783ffe0bb0f2c94847337ef940333e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B7=E5=8B=87?= Date: Mon, 9 Oct 2023 11:22:46 +0800 Subject: [PATCH 2/2] save --- server/hallserver/app/app.go | 16 ++++++++++------ server/hallserver/listener/httplistener.go | 4 ++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/server/hallserver/app/app.go b/server/hallserver/app/app.go index 98df0c4f..59a16ddd 100644 --- a/server/hallserver/app/app.go +++ b/server/hallserver/app/app.go @@ -1,19 +1,19 @@ package app import ( - "f5" - "q5" - "mt" "cs" - "ss" + "f5" "main/constant" . "main/global" + "mt" + "q5" + "ss" ) type app struct { netMsgQueue q5.Queue - initCb func() - unInitCb func() + initCb func() + unInitCb func() } func (this *app) GetPkgName() string { @@ -82,3 +82,7 @@ func (this *app) AddNetMsg(hdr *f5.MsgHdr) { func (this *app) registerDataSources() { } + +func (this *app) GetHttpListenPort() int32 { + return mt.Table.HallCluster.GetHttpListenPort() +} diff --git a/server/hallserver/listener/httplistener.go b/server/hallserver/listener/httplistener.go index 28bd86ed..6849506a 100644 --- a/server/hallserver/listener/httplistener.go +++ b/server/hallserver/listener/httplistener.go @@ -10,8 +10,8 @@ type httpListener struct { } func (this *httpListener) Init() { - this.httpServer = new (f5.HttpServer) - this.httpServer.Init("imserver.httplistener", 1000 * 10) + this.httpServer = new(f5.HttpServer) + this.httpServer.Init("hallserver.httplistener", 1000*10) this.httpServer.Start(mt.Table.HallCluster.GetHttpListenPort()) }