Monobit Unity Networking ver.2.8.0 Server API Reference (C++)
MunProxyDatabase.hpp
Go to the documentation of this file.
1 
7 #ifndef __MUN_PROXY_DATABASE_HPP__
8 #define __MUN_PROXY_DATABASE_HPP__
9 
10 #include <map>
11 #include <mrs.hpp>
12 #include <limits.h>
13 #include <sqlite/SqliteAgent.hpp>
14 #include <sql/SQL.hpp>
15 #include <stream/MunStream.hpp>
16 #include <version/MunVersion.hpp>
18 
23 {
24 private:
26  static MunVersion s_MunVersion;
27 
29  static std::map< uint64, MrsConnection > s_ClientConnectInfo;
30 
32  static std::map< MrsConnection, uint64 > s_ClientIdInfo;
33 
35  static uint32 s_GenUidSeed;
36 
41  static uint64 s_ProxyUid;
42 
43  static STREAM::ProxyCheckResponse s_ProxyCheckResponse;
44 
45 private:
51  static uint32 GenUid() {
52  uint32 startUid = s_GenUidSeed;
53  uint32 uid = 0;
54 
55  do {
56  // ID候補の取得.
57  uid = s_GenUidSeed;
58  s_GenUidSeed++;
59 
60  // 上限に達したら 1 を設定し、循環させる
61  if( UINT_MAX == s_GenUidSeed ) {
62  s_GenUidSeed = 1;
63  }
64 
65  // インデックス候補がインデックス情報として未登録であれば、そのIDを返す。
66  if( s_ClientConnectInfo.end() == s_ClientConnectInfo.find(uid) ) return uid;
67  } while( startUid != uid );
68 
69  return 0;
70  }
71 
72 public:
77  static uint64 GetProxyUid() { return s_ProxyUid; }
78 
79 protected:
85  static MrsConnection GetClientConnectInfo( uint64 clientUid ) {
86  std::map<uint64, MrsConnection>::iterator itr = s_ClientConnectInfo.find( clientUid );
87  return ( s_ClientConnectInfo.end() == itr ) ? NULL: itr->second;
88  }
89 
95  static uint64 GetClientConnectInfo( MrsConnection pMunClient ) {
96  std::map<MrsConnection, uint64>::iterator itr = s_ClientIdInfo.find( pMunClient );
97  return ( s_ClientIdInfo.end() == itr ) ? 0: itr->second;
98  }
99 
105  static void AddClientConnectInfo( uint64 clientUid, MrsConnection& pMunClient ) {
106  s_ClientConnectInfo.insert( std::pair<uint64, MrsConnection>( clientUid, pMunClient ) );
107  s_ClientIdInfo.insert( std::pair<MrsConnection, uint64>( pMunClient, clientUid ) );
108  }
109 
114  static void RemoveClientConnectInfo( uint64 clientUid ) {
115  MrsConnection pMunClient = GetClientConnectInfo(clientUid);
116  s_ClientIdInfo.erase(pMunClient);
117  s_ClientConnectInfo.erase(clientUid);
118  }
119 
124  static void RemoveClientConnectInfo( MrsConnection& pMunClient ) {
125  uint64 clientUid = GetClientConnectInfo(pMunClient);
126  s_ClientConnectInfo.erase(clientUid);
127  s_ClientIdInfo.erase(pMunClient);
128  }
129 
130 public:
136  static bool InitDB(MunProxyConfigure& configure);
137 
144  static uint64 AddMunClient(MrsConnection& pMunClient);
145 
151  static MrsConnection GetMunClient(uint64 clientUid);
152 
158  static uint64 GetMunClient(MrsConnection& pMunClient);
159 
164  static void RemoveMunClient(uint64 clientUid);
165 
170  static void RemoveMunClient(MrsConnection& pMunClient);
171 
177  static void Recv_Proxy_Check(MrsConnection pMunClient, STREAM::ProxyCheckRequest& request);
178 
184  static void Recv_Proxy_CheckResultFailure(MrsConnection pMunClient, bool isIgnoreError);
185 
191  static void Recv_Proxy_CheckResult(MrsConnection pMunClient, std::string response);
192 };
193 
194 #endif /* __MUN_PROXY_DATABASE_HPP__ */
MUN クライアントから mun_proxy サーバに対して送信される、mun_proxyサーバ認証要求. ...
Definition: MunStream.hpp:2030
static void Recv_Proxy_CheckResultFailure(MrsConnection pMunClient, bool isIgnoreError)
カスタム認証サーバから認証処理結果を受信できなかったときの処理.
Definition: MunProxyDatabase.cpp:166
mun_proxyサーバからMUNクライアントに対して送信される、mun_proxyサーバ認証結果.
Definition: MunStream.hpp:2144
mun_proxy サーバの設定.
Definition: MunProxyConfigure.hpp:29
MUNにおける通信データ情報.
static void RemoveClientConnectInfo(uint64 clientUid)
MUNクライアント接続情報を登録リストから削除する.
Definition: MunProxyDatabase.hpp:114
static uint64 GetClientConnectInfo(MrsConnection pMunClient)
MUNクライアント識別用ユニークIDを登録リストから取得する.
Definition: MunProxyDatabase.hpp:95
static void AddClientConnectInfo(uint64 clientUid, MrsConnection &pMunClient)
MUNクライアント接続情報を登録リストに追加する.
Definition: MunProxyDatabase.hpp:105
static uint64 AddMunClient(MrsConnection &pMunClient)
MUNクライアント識別用ユニークID発行手続き.
Definition: MunProxyDatabase.cpp:68
static void RemoveClientConnectInfo(MrsConnection &pMunClient)
MUNクライアント接続情報を登録リストから削除する.
Definition: MunProxyDatabase.hpp:124
static MrsConnection GetMunClient(uint64 clientUid)
MUNクライアント接続モジュールの取得.
Definition: MunProxyDatabase.cpp:83
MUNのバージョン管理クラス.
Definition: MunVersion.hpp:19
static bool InitDB(MunProxyConfigure &configure)
データベース初期化.
Definition: MunProxyDatabase.cpp:42
static uint64 GetProxyUid()
mun_proxy識別ユニークIDを取得.
Definition: MunProxyDatabase.hpp:77
static void Recv_Proxy_CheckResult(MrsConnection pMunClient, std::string response)
カスタム認証サーバから認証処理結果を受信したときの処理.
Definition: MunProxyDatabase.cpp:200
mun_proxyサーバの設定.
mun_proxyサーバのデータベース管理クラス.
Definition: MunProxyDatabase.hpp:22
static MrsConnection GetClientConnectInfo(uint64 clientUid)
MUNクライアント接続情報を登録リストから取得する.
Definition: MunProxyDatabase.hpp:85
static void Recv_Proxy_Check(MrsConnection pMunClient, STREAM::ProxyCheckRequest &request)
MUNクライアントから認証処理要求を受信したときの処理.
Definition: MunProxyDatabase.cpp:121
MUNのバージョン管理.
static void RemoveMunClient(uint64 clientUid)
MUNクライアント情報マップからデータを削除する.
Definition: MunProxyDatabase.cpp:102