Monobit Unity Networking ver.2.8.0 Server API Reference (C++)
MunGenUid.hpp
Go to the documentation of this file.
1 
7 #ifndef __MUN_GEN_UID_HPP__
8 #define __MUN_GEN_UID_HPP__
9 
10 #include <string>
11 #include <mrs.hpp>
12 
16 class MunGenUid
17 {
18 public:
25  static uint64 GetUid64( std::string host, uint16 port ) {
26  // 「ホスト名:ポート番号」の文字列化
27  char str[64];
28  ::snprintf( str, sizeof(str), "%s:%d", host.c_str(), port );
29  uint32 len = strlen(str);
30 
31  // FNV-1アルゴリズムによるハッシュ値の取得
32  uint64 base64 = 14695981039346656037U;
33 #ifdef _WIN32
34  uint64 prime64 = 1099511628211ULL;
35 #else
36  uint64 prime64 = 1099511628211LLU;
37 #endif /* _WIN32 */
38  uint64 hash = base64;
39  for( uint32 i = 0; i < len; i++ ) {
40  hash = (prime64 * hash) ^ (str[i]);
41  }
42 
43  return hash;
44  }
45 
52  static uint32 GetUid32( std::string host, uint16 port ) {
53  // 「ホスト名:ポート番号」の文字列化
54  char str[64];
55  ::snprintf( str, sizeof(str), "%s:%d", host.c_str(), port );
56  uint32 len = strlen(str);
57 
58  // FNV-1アルゴリズムによるハッシュ値の取得
59  uint32 base32 = 2166136261U;
60  uint32 prime32 = 16777619U;
61  uint32 hash = base32;
62  for( uint32 i = 0; i < len; i++ ) {
63  hash = (prime32 * hash) ^ (str[i]);
64  }
65 
66  return hash;
67  }
68 };
69 
70 #endif /* __MUN_GEN_PID_FILE_HPP__ */
static uint64 GetUid64(std::string host, uint16 port)
「ホスト名:ポート番号」の文字列情報から、64bitのハッシュ値を生成する.
Definition: MunGenUid.hpp:25
ユニークIDの生成.
Definition: MunGenUid.hpp:16
static uint32 GetUid32(std::string host, uint16 port)
「ホスト名:ポート番号」の文字列情報から、32bitのハッシュ値を生成する.
Definition: MunGenUid.hpp:52