#pragma once namespace cs { class CMJoin; class CMReconnect; class CMMatchCancel; class CMMatchChoose; class CMMatchStartGame; class CMMatchCancelStartGame; } class MatchTeam; class MatchMgr : public a8::Singleton { public: enum { HID = HID_MatchMgr }; private: MatchMgr() {}; friend class a8::Singleton; public: a8::TimerAttacher timer_attacher; void Init(); void UnInit(); void _CMJoin(f8::MsgHdr& hdr, const cs::CMJoin& msg); void _CMMatchCancel(f8::MsgHdr& hdr, const cs::CMMatchCancel& msg); void _CMMatchChoose(f8::MsgHdr& hdr, const cs::CMMatchChoose& msg); void _CMMatchStartGame(f8::MsgHdr& hdr, const cs::CMMatchStartGame& msg); void _CMMatchCancelStartGame(f8::MsgHdr& hdr, const cs::CMMatchCancelStartGame& msg); void TraverseTeam(std::function func); bool NeedMatch(const cs::CMJoin& msg); MatchTeam* GetTeam(const std::string& team_uuid); std::tuple* GetMatchInfo(int socket_handle); void RemoveTeam(const std::string& team_uuid); void RemoveSocket(int socket_handle); void Output(); private: std::map team_hash_; std::map> socket_hash_; };