Monobit Unity Networking ver.2.8.0 Server API Reference (C++)
MunRoomDatabase.hpp
Go to the documentation of this file.
1 
7 #ifndef __MUN_ROOM_DATABASE_HPP__
8 #define __MUN_ROOM_DATABASE_HPP__
9 
10 #include <map>
11 #include <limits.h>
12 #include <mrs.hpp>
13 #include <sqlite/SqliteAgent.hpp>
14 #include <sql/SQL.hpp>
15 #include <stream/MunStream.hpp>
16 #include <version/MunVersion.hpp>
20 
25 {
26 private:
28  static MunVersion s_MunVersion;
29 
31  static SqliteAgent s_RoomDB;
32 
34  static std::map<uint64, MunRoomInfo> s_RoomInfo;
35 
37  static int32 s_Weight;
38 
40  static std::map< uint64, MrsConnection > s_ClientConnectInfo;
41 
43  static std::map< MrsConnection, uint64 > s_ClientIdInfo;
44 
49  static uint64 s_RoomUid;
50 
54  static STREAM::RoomLoginPlayerResponse s_RoomLoginPlayerResponse;
55  static STREAM::RoomMasterLoginPlayerRequest s_RoomMasterLoginPlayerRequest;
56  static STREAM::RoomJoinedPlayerResponse s_RoomJoinedPlayerResponse;
57  static STREAM::RoomLeftPlayerResponse s_RoomLeftPlayerResponse;
58  static STREAM::RoomMasterUpdateHostIdRequest s_RoomMasterUpdateHostIdRequest;
59  static STREAM::RoomUpdateHostIdResponse s_RoomUpdateHostIdResponse;
60  static STREAM::RoomRPCResponse s_RoomRPCResponse;
61  static STREAM::RoomKickPlayerResponse s_RoomKickPlayerResponse;
62  static STREAM::RoomMasterLogoutPlayerRequest s_RoomMasterLogoutPlayerRequest;
63 
65  static std::list< MrsConnection > s_CloseConnections;
66 
67  static uint64 s_UpdateIntervalMsec;
68  static uint64 s_UpdateCheckMsec;
69 
70 public:
75  static uint64 GetRoomUid() { return s_RoomUid; }
76 
82  static MrsConnection GetClientConnectInfo( uint64 clientUid ) {
83  std::map<uint64, MrsConnection>::iterator itr = s_ClientConnectInfo.find( clientUid );
84  return ( s_ClientConnectInfo.end() == itr ) ? NULL: itr->second;
85  }
86 
92  static uint64 GetClientConnectInfo( MrsConnection pMunClient ) {
93  std::map<MrsConnection, uint64>::iterator itr = s_ClientIdInfo.find( pMunClient );
94  return ( s_ClientIdInfo.end() == itr ) ? 0: itr->second;
95  }
96 
102  static void AddClientConnectInfo( uint64 clientUid, MrsConnection pMunClient ) {
103  s_ClientConnectInfo.insert( std::pair<uint64, MrsConnection>( clientUid, pMunClient ) );
104  s_ClientIdInfo.insert( std::pair<MrsConnection, uint64>( pMunClient, clientUid ) );
105  }
106 
111  static void RemoveClientConnectInfo( uint64 clientUid ) {
112  MrsConnection pMunClient = GetClientConnectInfo(clientUid);
113  s_ClientIdInfo.erase(pMunClient);
114  s_ClientConnectInfo.erase(clientUid);
115  s_CloseConnections.push_back( pMunClient );
116  }
117 
122  static void RemoveClientConnectInfo( MrsConnection pMunClient ) {
123  uint64 clientUid = GetClientConnectInfo(pMunClient);
124  s_ClientConnectInfo.erase(clientUid);
125  s_ClientIdInfo.erase(pMunClient);
126  s_CloseConnections.push_back( pMunClient );
127  }
128 
134  static MunRoomInfo* GetRoomInfo( uint64 roomId ) {
135  std::map< uint64, MunRoomInfo>::iterator itr = s_RoomInfo.find(roomId);
136  return (s_RoomInfo.end() == itr) ? NULL : &(itr->second);
137  }
138 
144  static void CreateRoomInfo( uint64 roomId, bool isNeedHostPlayer ) {
145  s_RoomInfo.insert( std::pair<uint64, MunRoomInfo>( roomId, MunRoomInfo(roomId, isNeedHostPlayer) ) );
146  }
147 
152  static void DeleteRoomInfo( uint64 roomId ) {
153  s_RoomInfo.erase( roomId );
154  }
155 
162  static void BeginLoginPlayer( MrsConnection pMunClient, uint32 clientUidForMasterServer, uint64 clientUidForProxyServer );
163 
174  static void EndLoginPlayer( int32 result, uint32 clientUidForMasterServer, uint64 clientUidForProxyServer, uint64 roomId, STREAM::RoomInfo& roomInfo, STREAM::PlayerInfo& playerInfo, bool isNeedHostPlayer );
175 
186  static bool LoginPlayer( MrsConnection connection, uint32 clientUidForMasterServer, uint64 clientUidForProxyServer, uint64 roomId, STREAM::RoomInfo& roomInfo, STREAM::PlayerInfo& playerInfo, bool isNeedHostPlayer );
187 
194  static void LogoutPlayer( uint64 roomId, STREAM::RoomInfo& roomInfo, int32 playerId );
195 
201  static MunRoomPlayerInfo GetPlayer( uint64 clientUidForProxyServer );
202 
209  static MunRoomPlayerInfo GetPlayer( uint64 roomId, int32 playerId );
210 
222  static void AddPlayer( MrsConnection connection, MunRoomInfo* pRoom, int32 playerId, std::string playerName, uint32 clientUidForMasterServer, uint64 clientUidForProxyServer, STREAM::KeyValue* pParameters, uint16 parametersLen );
223 
229  static void RemovePlayer( MunRoomInfo* pRoom, int32 playerId );
230 
236  static void BeginUpdateHostId( uint64 roomId, int32 hostId );
237 
243  static void EndUpdateHostId( uint64 roomId, int32 hostId );
244 
250  static void UpdateHostId( MunRoomInfo* pRoom, int32 hostId );
251 
252  static void SetUpdateIntervalMsec( uint64 value ){ s_UpdateIntervalMsec = value; }
253  static bool IsGroupWriteRecord(){ return ( 0 < s_UpdateIntervalMsec ); }
254 
255 public:
261  static bool InitDB(MunRoomConfigure& configure);
262 
267  static bool Terminate();
268 
274  static void Recv_Room_LoginPlayer(MrsConnection pMunClient, STREAM::RoomLoginPlayerRequest &request);
275 
281  static void Recv_Room_UpdateHostId(MrsConnection pMunClient, STREAM::RoomUpdateHostIdRequest &request);
282 
288  static void Recv_Room_RPC(MrsConnection pMunClient, uint16 options, STREAM::RoomRPCRequest &request);
289 
295  static void Recv_Room_KickPlayer(MrsConnection pMunClient, STREAM::RoomKickPlayerRequest &request);
296 
301  static void Recv_Room_DisconnectPlayer(MrsConnection pMunClient);
302 
308  static void Recv_RoomMaster_LoginPlayerResult(MrsConnection pMunMaster, STREAM::RoomMasterLoginPlayerResponse &response);
309 
315  static void Recv_RoomMaster_LogoutPlayerResult(MrsConnection pMunMaster, STREAM::RoomMasterLogoutPlayerResponse &response);
316 
322  static void Recv_RoomMaster_UpdateHostIdResult(MrsConnection pMunMaster, STREAM::RoomMasterUpdateHostIdResponse &response);
323 
329  static void Recv_RoomMaster_UpdatePlayerParameters(MrsConnection pMunMaster, STREAM::RoomMasterUpdatePlayerParametersRequest &request);
330 
336  static void Recv_RoomMaster_UpdatePlayerName(MrsConnection pMunMaster, STREAM::RoomMasterUpdatePlayerNameRequest &request);
337 
341  static void Update();
342 };
343 
344 #endif /* __MUN_ROOM_DATABASE_HPP__ */
static void EndUpdateHostId(uint64 roomId, int32 hostId)
ホストを変更させる手続きを完了する.
Definition: MunRoomDatabase.cpp:490
static void AddPlayer(MrsConnection connection, MunRoomInfo *pRoom, int32 playerId, std::string playerName, uint32 clientUidForMasterServer, uint64 clientUidForProxyServer, STREAM::KeyValue *pParameters, uint16 parametersLen)
プレイヤーをルームに入室させる.
Definition: MunRoomDatabase.cpp:406
static void Recv_Room_DisconnectPlayer(MrsConnection pMunClient)
MUNクライアントが切断したときの処理.
Definition: MunRoomDatabase.cpp:750
static uint64 GetClientConnectInfo(MrsConnection pMunClient)
MUNクライアント識別用ユニークIDを登録リストから取得する.
Definition: MunRoomDatabase.hpp:92
mun_roomサーバからmun_masterサーバに対して送信される、ホストの変更処理結果.
Definition: MunStream.hpp:5216
MUNクライアントからmun_roomサーバに対して送信される、ホストの変更要求.
Definition: MunStream.hpp:5767
MUN クライアントから送信される、対象プレイヤーの強制退室要求.
Definition: MunStream.hpp:6060
mun_masterサーバからmun_roomサーバに対して送信される、プレイヤーのルームログイン処理結果.
Definition: MunStream.hpp:4904
mun_roomサーバのデータベース管理クラス.
Definition: MunRoomDatabase.hpp:24
static void Update()
更新処理.
Definition: MunRoomDatabase.cpp:853
static void RemoveClientConnectInfo(uint64 clientUid)
MUNクライアント接続情報を登録リストから削除する.
Definition: MunRoomDatabase.hpp:111
static MunRoomPlayerInfo GetPlayer(uint64 clientUidForProxyServer)
指定されたセッションIDで管理されているルーム内プレイヤー情報を取得する.
Definition: MunRoomDatabase.cpp:320
static void LogoutPlayer(uint64 roomId, STREAM::RoomInfo &roomInfo, int32 playerId)
MUNクライアントのログアウト処理.
Definition: MunRoomDatabase.cpp:268
mun_roomサーバからMUNクライアントに対して送信される、誰かがルームにログインした結果.
Definition: MunStream.hpp:5639
static void Recv_RoomMaster_UpdatePlayerParameters(MrsConnection pMunMaster, STREAM::RoomMasterUpdatePlayerParametersRequest &request)
mun_masterサーバからプレイヤーパラメータ更新要求を受信したときの処理.
Definition: MunRoomDatabase.cpp:815
static void EndLoginPlayer(int32 result, uint32 clientUidForMasterServer, uint64 clientUidForProxyServer, uint64 roomId, STREAM::RoomInfo &roomInfo, STREAM::PlayerInfo &playerInfo, bool isNeedHostPlayer)
MUNクライアントをログインさせる手続きを完了する.
Definition: MunRoomDatabase.cpp:155
static void Recv_RoomMaster_UpdateHostIdResult(MrsConnection pMunMaster, STREAM::RoomMasterUpdateHostIdResponse &response)
mun_masterサーバからホスト変更手続き処理結果を受信したときの処理.
Definition: MunRoomDatabase.cpp:802
mun_room サーバから送信される、対象プレイヤーの強制退室結果.
Definition: MunStream.hpp:6117
mun_roomサーバ内のルーム内プレイヤー情報.
static uint64 GetRoomUid()
mun_room識別ユニークIDを取得.
Definition: MunRoomDatabase.hpp:75
static void Recv_Room_LoginPlayer(MrsConnection pMunClient, STREAM::RoomLoginPlayerRequest &request)
MUNクライアントからログイン要求を受信したときの処理.
Definition: MunRoomDatabase.cpp:544
static void Recv_Room_RPC(MrsConnection pMunClient, uint16 options, STREAM::RoomRPCRequest &request)
MUNクライアントからRPCメッセージを受信したときの処理.
Definition: MunRoomDatabase.cpp:619
MUNにおける通信データ情報.
mun_masterサーバからmun_roomサーバに対して送信される、プレイヤーパラメータの変更通知.
Definition: MunStream.hpp:5281
static void DeleteRoomInfo(uint64 roomId)
ルーム情報の削除.
Definition: MunRoomDatabase.hpp:152
任意のKey-Valueペア.
Definition: MunStream.hpp:602
static MrsConnection GetClientConnectInfo(uint64 clientUid)
MUNクライアント接続情報を登録リストから取得する.
Definition: MunRoomDatabase.hpp:82
static void RemoveClientConnectInfo(MrsConnection pMunClient)
MUNクライアント接続情報を登録リストから削除する.
Definition: MunRoomDatabase.hpp:122
static void Recv_RoomMaster_UpdatePlayerName(MrsConnection pMunMaster, STREAM::RoomMasterUpdatePlayerNameRequest &request)
mun_masterサーバからプレイヤー名更新要求を受信したときの処理.
Definition: MunRoomDatabase.cpp:835
MUNクライアントからmun_roomサーバに対して送信される、汎用的なRPC送信要求.
Definition: MunStream.hpp:5879
static void AddClientConnectInfo(uint64 clientUid, MrsConnection pMunClient)
MUNクライアント接続情報を登録リストに追加する.
Definition: MunRoomDatabase.hpp:102
static void Recv_RoomMaster_LoginPlayerResult(MrsConnection pMunMaster, STREAM::RoomMasterLoginPlayerResponse &response)
mun_masterサーバからプレイヤーのログイン手続き処理結果を受信したときの処理.
Definition: MunRoomDatabase.cpp:776
mun_roomサーバからmun_masterサーバに対して送信される、プレイヤーのルームログアウト要求.
Definition: MunStream.hpp:5013
static void UpdateHostId(MunRoomInfo *pRoom, int32 hostId)
ホストの変更処理.
Definition: MunRoomDatabase.cpp:505
static void RemovePlayer(MunRoomInfo *pRoom, int32 playerId)
プレイヤーをルームから退室させる.
Definition: MunRoomDatabase.cpp:436
static void Recv_Room_KickPlayer(MrsConnection pMunClient, STREAM::RoomKickPlayerRequest &request)
MUNクライアントから対象プレイヤーの強制退室要求を受信したときの処理.
Definition: MunRoomDatabase.cpp:710
mun_roomサーバからMUNクライアントに対して送信される、ホストの変更処理結果.
Definition: MunStream.hpp:5823
static bool LoginPlayer(MrsConnection connection, uint32 clientUidForMasterServer, uint64 clientUidForProxyServer, uint64 roomId, STREAM::RoomInfo &roomInfo, STREAM::PlayerInfo &playerInfo, bool isNeedHostPlayer)
mun_masterサーバでの認証後、MUNクライアントをルームにログインさせる処理.
Definition: MunRoomDatabase.cpp:214
mun_roomサーバからmun_masterサーバに対して送信される、ホストの変更要求.
Definition: MunStream.hpp:5151
mun_roomサーバの設定.
mun_roomサーバからMUNクライアントに対して送信される、汎用的なRPC送信処理結果.
Definition: MunStream.hpp:6001
static void BeginLoginPlayer(MrsConnection pMunClient, uint32 clientUidForMasterServer, uint64 clientUidForProxyServer)
MUNクライアントをログインさせる手続きを開始する.
Definition: MunRoomDatabase.cpp:129
static void Recv_RoomMaster_LogoutPlayerResult(MrsConnection pMunMaster, STREAM::RoomMasterLogoutPlayerResponse &response)
mun_masterサーバからプレイヤーのログアウト手続き処理結果を受信したときの処理.
Definition: MunRoomDatabase.cpp:789
static MunRoomInfo * GetRoomInfo(uint64 roomId)
指定したIDを持つルーム情報の取得.
Definition: MunRoomDatabase.hpp:134
mun_roomサーバからMUNクライアントに対して送信される、誰かがルームからログアウトした結果.
Definition: MunStream.hpp:5702
mun_roomサーバからmun_masterサーバに対して送信される、プレイヤーのルームログアウト処理結果.
Definition: MunStream.hpp:5078
mun_masterサーバからmun_roomサーバに対して送信される、プレイヤーパラメータの変更通知.
Definition: MunStream.hpp:5380
MUNのバージョン管理クラス.
Definition: MunVersion.hpp:19
MUNクライアントからmun_roomサーバに対して送信される、ルームログイン要求.
Definition: MunStream.hpp:5454
static void Recv_Room_UpdateHostId(MrsConnection pMunClient, STREAM::RoomUpdateHostIdRequest &request)
MUNクライアントからホスト変更要求を受信したときの処理.
Definition: MunRoomDatabase.cpp:598
ルーム情報クラス.
Definition: MunRoomInfo.hpp:19
static void CreateRoomInfo(uint64 roomId, bool isNeedHostPlayer)
ルーム情報の生成.
Definition: MunRoomDatabase.hpp:144
static bool Terminate()
データベース破棄.
Definition: MunRoomDatabase.cpp:118
mun_roomサーバ内のルーム情報.
mun_roomサーバからMUNクライアントに対して送信される、ルームログイン処理結果.
Definition: MunStream.hpp:5519
ルーム内プレイヤー情報クラス.
Definition: MunRoomPlayerInfo.hpp:17
static bool InitDB(MunRoomConfigure &configure)
データベース初期化.
Definition: MunRoomDatabase.cpp:62
static void BeginUpdateHostId(uint64 roomId, int32 hostId)
ホストを変更させる手続きを開始する.
Definition: MunRoomDatabase.cpp:475
mun_roomサーバからmun_masterサーバに対して送信される、プレイヤーのルームログイン要求.
Definition: MunStream.hpp:4839
ルーム情報.
Definition: MunStream.hpp:1282
プレイヤー情報.
Definition: MunStream.hpp:1060
MUNのバージョン管理.
mun_room サーバの設定.
Definition: MunRoomConfigure.hpp:28