com.xmobitea.changx.gn-unity 2.0.3 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/Editor/GNServerSettingsEditor.cs +16 -300
  2. package/Runtime/Common/GNArray.cs +387 -302
  3. package/Runtime/Common/GNArray.cs.meta +11 -11
  4. package/Runtime/Common/GNData.cs +61 -48
  5. package/Runtime/Common/GNData.cs.meta +11 -11
  6. package/Runtime/Common/GNHashtable.cs +404 -241
  7. package/Runtime/Common/GNHashtable.cs.meta +11 -11
  8. package/Runtime/Common/IGNData.cs +20 -11
  9. package/Runtime/Common/IGNData.cs.meta +11 -11
  10. package/Runtime/Common.meta +8 -8
  11. package/Runtime/Config/GNServerSettings.cs +136 -92
  12. package/Runtime/Config/GNServerSettings.cs.meta +11 -11
  13. package/Runtime/Config.meta +8 -8
  14. package/Runtime/Constant/Commands.cs +82 -19
  15. package/Runtime/Constant/Commands.cs.meta +11 -11
  16. package/Runtime/Constant/EnumType/FriendStatus.cs +12 -12
  17. package/Runtime/Constant/EnumType/FriendStatus.cs.meta +11 -11
  18. package/Runtime/Constant/EnumType/GoogleLoginType.cs +5 -5
  19. package/Runtime/Constant/EnumType/GoogleLoginType.cs.meta +11 -11
  20. package/Runtime/Constant/EnumType/GroupStatus.cs +7 -7
  21. package/Runtime/Constant/EnumType/GroupStatus.cs.meta +11 -11
  22. package/Runtime/Constant/EnumType/InvalidMemberType.cs +23 -23
  23. package/Runtime/Constant/EnumType/InvalidMemberType.cs.meta +11 -11
  24. package/Runtime/Constant/EnumType/ItemType.cs +5 -5
  25. package/Runtime/Constant/EnumType/ItemType.cs.meta +11 -11
  26. package/Runtime/Constant/EnumType/MatchmakingMemberStatus.cs +6 -6
  27. package/Runtime/Constant/EnumType/MatchmakingMemberStatus.cs.meta +11 -11
  28. package/Runtime/Constant/EnumType/MatchmakingTicketStatus.cs +2 -2
  29. package/Runtime/Constant/EnumType/MatchmakingTicketStatus.cs.meta +11 -11
  30. package/Runtime/Constant/EnumType/OwnerType.cs +3 -2
  31. package/Runtime/Constant/EnumType/OwnerType.cs.meta +11 -11
  32. package/Runtime/Constant/EnumType/PermissionDataItem.cs +10 -10
  33. package/Runtime/Constant/EnumType/PermissionDataItem.cs.meta +11 -11
  34. package/Runtime/Constant/EnumType/PushPlatformType.cs +10 -0
  35. package/Runtime/Constant/EnumType/PushPlatformType.cs.meta +11 -0
  36. package/Runtime/Constant/EnumType/RequestRole.cs +11 -11
  37. package/Runtime/Constant/EnumType/RequestRole.cs.meta +7 -7
  38. package/Runtime/Constant/EnumType/RequestType.cs +20 -19
  39. package/Runtime/Constant/EnumType/RequestType.cs.meta +11 -11
  40. package/Runtime/Constant/EnumType/StoreReceiveType.cs +13 -0
  41. package/Runtime/Constant/EnumType/StoreReceiveType.cs.meta +11 -0
  42. package/Runtime/Constant/EnumType.meta +8 -8
  43. package/Runtime/Constant/ErrorCode/GNErrorCode.cs +53 -48
  44. package/Runtime/Constant/ErrorCode/GNErrorCode.cs.meta +7 -7
  45. package/Runtime/Constant/ErrorCode.meta +8 -8
  46. package/Runtime/Constant/EventCode.cs +43 -16
  47. package/Runtime/Constant/EventCode.cs.meta +11 -11
  48. package/Runtime/Constant/OperationCode.cs +249 -211
  49. package/Runtime/Constant/OperationCode.cs.meta +11 -11
  50. package/Runtime/Constant/ParameterCode/GNParameterCode.cs +614 -466
  51. package/Runtime/Constant/ParameterCode/GNParameterCode.cs.meta +11 -11
  52. package/Runtime/Constant/ParameterCode/ParameterCode.cs +12 -12
  53. package/Runtime/Constant/ParameterCode/ParameterCode.cs.meta +11 -11
  54. package/Runtime/Constant/ParameterCode.meta +8 -8
  55. package/Runtime/Constant/ReturnCode.cs +73 -25
  56. package/Runtime/Constant/ReturnCode.cs.meta +11 -11
  57. package/Runtime/Constant.meta +8 -8
  58. package/Runtime/Entity/DataMember.cs +342 -124
  59. package/Runtime/Entity/DataMember.cs.meta +11 -11
  60. package/Runtime/Entity/GNMetadata.cs +72 -27
  61. package/Runtime/Entity/GNMetadata.cs.meta +11 -11
  62. package/Runtime/Entity/InvalidMember.cs +52 -33
  63. package/Runtime/Entity/InvalidMember.cs.meta +11 -11
  64. package/Runtime/Entity/Models/AuthenticateModels.cs +251 -207
  65. package/Runtime/Entity/Models/AuthenticateModels.cs.meta +11 -11
  66. package/Runtime/Entity/Models/AuthenticateRequestModels.cs +153 -131
  67. package/Runtime/Entity/Models/AuthenticateRequestModels.cs.meta +11 -11
  68. package/Runtime/Entity/Models/AuthenticateResponseModels.cs +61 -51
  69. package/Runtime/Entity/Models/AuthenticateResponseModels.cs.meta +11 -11
  70. package/Runtime/Entity/Models/CharacterPlayerModels.cs +985 -849
  71. package/Runtime/Entity/Models/CharacterPlayerModels.cs.meta +11 -11
  72. package/Runtime/Entity/Models/CharacterPlayerRequestModels.cs +957 -885
  73. package/Runtime/Entity/Models/CharacterPlayerRequestModels.cs.meta +11 -11
  74. package/Runtime/Entity/Models/CharacterPlayerResponseModels.cs +165 -150
  75. package/Runtime/Entity/Models/CharacterPlayerResponseModels.cs.meta +11 -11
  76. package/Runtime/Entity/Models/CloudScriptModels.cs +185 -0
  77. package/Runtime/Entity/Models/CloudScriptModels.cs.meta +11 -0
  78. package/Runtime/Entity/Models/CloudScriptRequestModels.cs +134 -0
  79. package/Runtime/Entity/Models/CloudScriptRequestModels.cs.meta +11 -0
  80. package/Runtime/Entity/Models/CloudScriptResponseModels.cs +34 -0
  81. package/Runtime/Entity/Models/CloudScriptResponseModels.cs.meta +11 -0
  82. package/Runtime/Entity/Models/ContentModels.cs +150 -153
  83. package/Runtime/Entity/Models/ContentModels.cs.meta +11 -11
  84. package/Runtime/Entity/Models/ContentRequestModels.cs +129 -129
  85. package/Runtime/Entity/Models/ContentRequestModels.cs.meta +11 -11
  86. package/Runtime/Entity/Models/ContentResponseModels.cs +24 -24
  87. package/Runtime/Entity/Models/ContentResponseModels.cs.meta +11 -11
  88. package/Runtime/Entity/Models/DashboardModels.cs +1684 -1156
  89. package/Runtime/Entity/Models/DashboardModels.cs.meta +11 -11
  90. package/Runtime/Entity/Models/DashboardRequestModels.cs +220 -147
  91. package/Runtime/Entity/Models/DashboardRequestModels.cs.meta +11 -11
  92. package/Runtime/Entity/Models/DashboardResponseModels.cs +92 -57
  93. package/Runtime/Entity/Models/DashboardResponseModels.cs.meta +11 -11
  94. package/Runtime/Entity/Models/GamePlayerModels.cs +1073 -933
  95. package/Runtime/Entity/Models/GamePlayerModels.cs.meta +11 -11
  96. package/Runtime/Entity/Models/GamePlayerRequestModels.cs +939 -867
  97. package/Runtime/Entity/Models/GamePlayerRequestModels.cs.meta +11 -11
  98. package/Runtime/Entity/Models/GamePlayerResponseModels.cs +162 -147
  99. package/Runtime/Entity/Models/GamePlayerResponseModels.cs.meta +11 -11
  100. package/Runtime/Entity/Models/GenericModels.cs +102 -102
  101. package/Runtime/Entity/Models/GenericModels.cs.meta +11 -11
  102. package/Runtime/Entity/Models/GroupModels.cs +812 -676
  103. package/Runtime/Entity/Models/GroupModels.cs.meta +11 -11
  104. package/Runtime/Entity/Models/GroupRequestModels.cs +741 -669
  105. package/Runtime/Entity/Models/GroupRequestModels.cs.meta +11 -11
  106. package/Runtime/Entity/Models/GroupResponseModels.cs +129 -114
  107. package/Runtime/Entity/Models/GroupResponseModels.cs.meta +11 -11
  108. package/Runtime/Entity/Models/InventoryModels.cs +667 -558
  109. package/Runtime/Entity/Models/InventoryModels.cs.meta +11 -11
  110. package/Runtime/Entity/Models/InventoryRequestModels.cs +626 -579
  111. package/Runtime/Entity/Models/InventoryRequestModels.cs.meta +11 -11
  112. package/Runtime/Entity/Models/InventoryResponseModels.cs +109 -99
  113. package/Runtime/Entity/Models/InventoryResponseModels.cs.meta +11 -11
  114. package/Runtime/Entity/Models/MasterPlayerModels.cs +1882 -1340
  115. package/Runtime/Entity/Models/MasterPlayerModels.cs.meta +11 -11
  116. package/Runtime/Entity/Models/MasterPlayerRequestModels.cs +1643 -1253
  117. package/Runtime/Entity/Models/MasterPlayerRequestModels.cs.meta +11 -11
  118. package/Runtime/Entity/Models/MasterPlayerResponseModels.cs +293 -213
  119. package/Runtime/Entity/Models/MasterPlayerResponseModels.cs.meta +11 -11
  120. package/Runtime/Entity/Models/MultiplayerModels.cs +293 -223
  121. package/Runtime/Entity/Models/MultiplayerModels.cs.meta +11 -11
  122. package/Runtime/Entity/Models/MultiplayerRequestModels.cs +199 -149
  123. package/Runtime/Entity/Models/MultiplayerRequestModels.cs.meta +11 -11
  124. package/Runtime/Entity/Models/MultiplayerResponseModels.cs +59 -49
  125. package/Runtime/Entity/Models/MultiplayerResponseModels.cs.meta +11 -11
  126. package/Runtime/Entity/Models/StoreInventoryModels.cs +514 -323
  127. package/Runtime/Entity/Models/StoreInventoryModels.cs.meta +11 -11
  128. package/Runtime/Entity/Models/StoreInventoryRequestModels.cs +236 -165
  129. package/Runtime/Entity/Models/StoreInventoryRequestModels.cs.meta +11 -11
  130. package/Runtime/Entity/Models/StoreInventoryResponseModels.cs +45 -30
  131. package/Runtime/Entity/Models/StoreInventoryResponseModels.cs.meta +11 -11
  132. package/Runtime/Entity/Models.meta +8 -8
  133. package/Runtime/Entity/OperationEvent.cs +111 -75
  134. package/Runtime/Entity/OperationEvent.cs.meta +11 -11
  135. package/Runtime/Entity/OperationHelper.cs +51 -35
  136. package/Runtime/Entity/OperationHelper.cs.meta +11 -11
  137. package/Runtime/Entity/OperationRequest.cs +142 -99
  138. package/Runtime/Entity/OperationRequest.cs.meta +11 -11
  139. package/Runtime/Entity/OperationResponse.cs +111 -63
  140. package/Runtime/Entity/OperationResponse.cs.meta +11 -11
  141. package/Runtime/Entity/Request/CustomOperationRequest.cs +112 -61
  142. package/Runtime/Entity/Request/CustomOperationRequest.cs.meta +11 -11
  143. package/Runtime/Entity/Request.meta +8 -8
  144. package/Runtime/Entity/Response/CustomOperationResponse.cs +84 -63
  145. package/Runtime/Entity/Response/CustomOperationResponse.cs.meta +11 -11
  146. package/Runtime/Entity/Response.meta +8 -8
  147. package/Runtime/Entity.meta +8 -8
  148. package/Runtime/GNNetwork.cs +501 -182
  149. package/Runtime/GNNetwork.cs.meta +11 -11
  150. package/Runtime/GNNetworkApi.cs +38 -19
  151. package/Runtime/GNNetworkApi.cs.meta +11 -11
  152. package/Runtime/GNNetworkAuthenticateApi.cs +531 -98
  153. package/Runtime/GNNetworkAuthenticateApi.cs.meta +11 -11
  154. package/Runtime/GNNetworkCharacterPlayerApi.cs +1587 -762
  155. package/Runtime/GNNetworkCharacterPlayerApi.cs.meta +11 -11
  156. package/Runtime/GNNetworkCloudScriptApi.cs +181 -0
  157. package/Runtime/GNNetworkCloudScriptApi.cs.meta +11 -0
  158. package/Runtime/GNNetworkContentApi.cs +238 -132
  159. package/Runtime/GNNetworkContentApi.cs.meta +11 -11
  160. package/Runtime/GNNetworkDashboardApi.cs +278 -117
  161. package/Runtime/GNNetworkDashboardApi.cs.meta +11 -11
  162. package/Runtime/GNNetworkGamePlayerApi.cs +1558 -747
  163. package/Runtime/GNNetworkGamePlayerApi.cs.meta +11 -11
  164. package/Runtime/GNNetworkGroupApi.cs +1228 -582
  165. package/Runtime/GNNetworkGroupApi.cs.meta +11 -11
  166. package/Runtime/GNNetworkInventoryApi.cs +1048 -507
  167. package/Runtime/GNNetworkInventoryApi.cs.meta +11 -11
  168. package/Runtime/GNNetworkMasterPlayerApi.cs +2586 -1067
  169. package/Runtime/GNNetworkMasterPlayerApi.cs.meta +11 -11
  170. package/Runtime/GNNetworkMultiplayerApi.cs +328 -147
  171. package/Runtime/GNNetworkMultiplayerApi.cs.meta +11 -11
  172. package/Runtime/GNNetworkStoreInventoryApi.cs +388 -162
  173. package/Runtime/GNNetworkStoreInventoryApi.cs.meta +11 -11
  174. package/Runtime/Helper/CodeHelper.cs +140 -98
  175. package/Runtime/Helper/CodeHelper.cs.meta +11 -11
  176. package/Runtime/Helper/ConverterService.cs +236 -52
  177. package/Runtime/Helper/ConverterService.cs.meta +11 -11
  178. package/Runtime/Helper/ParseGNHelper.cs +451 -451
  179. package/Runtime/Helper/ParseGNHelper.cs.meta +11 -11
  180. package/Runtime/Helper.meta +8 -8
  181. package/Runtime/Logger/GNDebug.cs +92 -49
  182. package/Runtime/Logger/GNDebug.cs.meta +11 -11
  183. package/Runtime/Logger.meta +8 -8
  184. package/Runtime/Networking/AuthenticateStatus.cs +57 -35
  185. package/Runtime/Networking/AuthenticateStatus.cs.meta +11 -11
  186. package/Runtime/Networking/Handler/IServerEventHandler.cs +25 -25
  187. package/Runtime/Networking/Handler/IServerEventHandler.cs.meta +11 -11
  188. package/Runtime/Networking/Handler/OnCharacterPlayerFriendUpdateEventHandler.cs +61 -32
  189. package/Runtime/Networking/Handler/OnCharacterPlayerFriendUpdateEventHandler.cs.meta +11 -11
  190. package/Runtime/Networking/Handler/OnCharacterPlayerGroupUpdateEventHandler.cs +54 -33
  191. package/Runtime/Networking/Handler/OnCharacterPlayerGroupUpdateEventHandler.cs.meta +11 -11
  192. package/Runtime/Networking/Handler/OnGamePlayerFriendUpdateEventHandler.cs +54 -32
  193. package/Runtime/Networking/Handler/OnGamePlayerFriendUpdateEventHandler.cs.meta +11 -11
  194. package/Runtime/Networking/Handler/OnGamePlayerGroupUpdateEventHandler.cs +54 -32
  195. package/Runtime/Networking/Handler/OnGamePlayerGroupUpdateEventHandler.cs.meta +11 -11
  196. package/Runtime/Networking/Handler/OnGroupMemberUpdateEventHandler.cs +48 -29
  197. package/Runtime/Networking/Handler/OnGroupMemberUpdateEventHandler.cs.meta +11 -11
  198. package/Runtime/Networking/Handler/OnGroupMessageUpdateEventHandler.cs +47 -29
  199. package/Runtime/Networking/Handler/OnGroupMessageUpdateEventHandler.cs.meta +11 -11
  200. package/Runtime/Networking/Handler.meta +8 -8
  201. package/Runtime/Networking/Http/HttpPeer.cs +68 -25
  202. package/Runtime/Networking/Http/HttpPeer.cs.meta +11 -11
  203. package/Runtime/Networking/Http/NetworkingHttpPeerBase.cs +65 -25
  204. package/Runtime/Networking/Http/NetworkingHttpPeerBase.cs.meta +11 -11
  205. package/Runtime/Networking/Http/NetworkingPeerHttpClientRequest.cs +513 -486
  206. package/Runtime/Networking/Http/NetworkingPeerHttpClientRequest.cs.meta +11 -11
  207. package/Runtime/Networking/Http/NetworkingPeerHttpRequest.cs +172 -142
  208. package/Runtime/Networking/Http/NetworkingPeerHttpRequest.cs.meta +11 -11
  209. package/Runtime/Networking/Http/NetworkingPeerUnityWebRequest.cs +225 -188
  210. package/Runtime/Networking/Http/NetworkingPeerUnityWebRequest.cs.meta +11 -11
  211. package/Runtime/Networking/Http.meta +8 -8
  212. package/Runtime/Networking/IPeer.cs +41 -19
  213. package/Runtime/Networking/IPeer.cs.meta +11 -11
  214. package/Runtime/Networking/NetworkingPeer.cs +198 -144
  215. package/Runtime/Networking/NetworkingPeer.cs.meta +11 -11
  216. package/Runtime/Networking/NetworkingPeerAPI.cs +20 -21
  217. package/Runtime/Networking/NetworkingPeerAPI.cs.meta +11 -11
  218. package/Runtime/Networking/OperationPending.cs +159 -95
  219. package/Runtime/Networking/OperationPending.cs.meta +11 -11
  220. package/Runtime/Networking/PeerBase.cs +305 -242
  221. package/Runtime/Networking/PeerBase.cs.meta +11 -11
  222. package/Runtime/Networking/Socket/NetworkingPeerSocketV2.cs +222 -185
  223. package/Runtime/Networking/Socket/NetworkingPeerSocketV2.cs.meta +11 -11
  224. package/Runtime/Networking/Socket/NetworkingPeerSocketV3.cs +235 -177
  225. package/Runtime/Networking/Socket/NetworkingPeerSocketV3.cs.meta +11 -11
  226. package/Runtime/Networking/Socket/NetworkingSocketPeerBase.cs +165 -23
  227. package/Runtime/Networking/Socket/NetworkingSocketPeerBase.cs.meta +11 -11
  228. package/Runtime/Networking/Socket/SocketPeer.cs +242 -197
  229. package/Runtime/Networking/Socket/SocketPeer.cs.meta +11 -11
  230. package/Runtime/Networking/Socket.meta +8 -8
  231. package/Runtime/Networking.meta +8 -8
  232. package/Runtime/Unity/ServiceCoroutine.cs +10 -0
  233. package/Runtime/Unity/ServiceCoroutine.cs.meta +11 -0
  234. package/Runtime/Unity/ServiceUpdate.cs +33 -20
  235. package/Runtime/Unity/ServiceUpdate.cs.meta +11 -11
  236. package/Runtime/Unity.meta +8 -8
  237. package/Runtime/XmobiTea.GN.runtime.asmdef +16 -16
  238. package/Runtime/XmobiTea.GN.runtime.asmdef.meta +7 -7
  239. package/package.json +1 -1
@@ -1,144 +1,198 @@
1
- namespace XmobiTea.GN.Networking
2
- {
3
- using System;
4
- using XmobiTea.GN.Common;
5
- using XmobiTea.GN.Constant;
6
- using XmobiTea.GN.Entity;
7
-
8
- public partial class NetworkingPeer
9
- {
10
- private IPeer socketPeer;
11
- private IPeer httpPeer;
12
-
13
- internal AuthenticateStatus authenticateStatus;
14
-
15
- internal int getPing()
16
- {
17
- var count = 0;
18
- var totalPing = 0;
19
-
20
- if (this.httpPeer.isUsing())
21
- {
22
- count++;
23
- totalPing += ((PeerBase)this.httpPeer).ping;
24
- }
25
-
26
- if (this.socketPeer.isUsing())
27
- {
28
- count++;
29
- totalPing += ((PeerBase)this.socketPeer).ping;
30
- }
31
-
32
- return totalPing / count;
33
- }
34
-
35
- internal string getClientId()
36
- {
37
- return (this.socketPeer as Socket.SocketPeer).getClientId();
38
- }
39
-
40
- private long lastCurrentServerMilliseconds;
41
- private float lastGetCurrentMilliseconds;
42
-
43
- internal void setServerTimeMilliseconds(long currentServerMilliseconds)
44
- {
45
- this.lastCurrentServerMilliseconds = currentServerMilliseconds;
46
- this.lastGetCurrentMilliseconds = UnityEngine.Time.realtimeSinceStartup;
47
- }
48
-
49
- internal long getServerTimestamp()
50
- {
51
- return this.lastCurrentServerMilliseconds + (int)((UnityEngine.Time.realtimeSinceStartup - this.lastGetCurrentMilliseconds) * 1000);
52
- }
53
-
54
- internal void initPeer()
55
- {
56
- this.setServerTimeMilliseconds(DateTimeOffset.UtcNow.ToUnixTimeMilliseconds());
57
-
58
- var gnServerSettings = GNNetwork.gnServerSettings;
59
- if (gnServerSettings == null) throw new NullReferenceException("Null GN Server Settings, please find it now");
60
-
61
- this.authenticateStatus = new AuthenticateStatus();
62
-
63
- this.httpPeer = new Http.HttpPeer();
64
- this.httpPeer.initPeer();
65
-
66
- this.socketPeer = new Socket.SocketPeer();
67
- this.socketPeer.initPeer();
68
- }
69
-
70
- internal void service()
71
- {
72
- this.httpPeer?.service();
73
- this.socketPeer?.service();
74
- }
75
-
76
- internal void sendViaSocket(RequestType requestType, RequestRole requestRole, OperationRequest request, Action<OperationResponse> onResponse = null, string authToken = null, string secretKey = null, GNHashtable customTags = null)
77
- {
78
- if (authToken == null) authToken = GNNetwork.getAuthenticateStatus().getAuthToken();
79
- if (secretKey == null)
80
- {
81
- if (requestRole == RequestRole.Admin) secretKey = GNNetwork.gnServerSettings.getAdminSecretKey();
82
- else if (requestRole == RequestRole.Server) secretKey = GNNetwork.gnServerSettings.getServerSecretKey();
83
- else if (requestRole == RequestRole.Client) secretKey = GNNetwork.gnServerSettings.getClientSecretKey();
84
- }
85
-
86
- this.socketPeer.enqueue(requestType, requestRole, request, onResponse, authToken, secretKey, customTags);
87
- }
88
-
89
- internal void sendViaHttp(RequestType requestType, RequestRole requestRole, OperationRequest request, Action<OperationResponse> onResponse = null, string authToken = null, string secretKey = null, GNHashtable customTags = null)
90
- {
91
- if (authToken == null) authToken = this.authenticateStatus.getAuthToken();
92
- if (secretKey == null)
93
- {
94
- if (requestRole == RequestRole.Admin) secretKey = GNNetwork.gnServerSettings.getAdminSecretKey();
95
- else if (requestRole == RequestRole.Server) secretKey = GNNetwork.gnServerSettings.getServerSecretKey();
96
- else if (requestRole == RequestRole.Client) secretKey = GNNetwork.gnServerSettings.getClientSecretKey();
97
- }
98
-
99
- this.httpPeer.enqueue(requestType, requestRole, request, onResponse, authToken, secretKey, customTags);
100
- }
101
-
102
- internal void sendRequestAuthSocket()
103
- {
104
- (this.socketPeer as Socket.SocketPeer).sendRequestAuthSocket();
105
- }
106
-
107
- internal void connectSocket(Action _onSocketConnect)
108
- {
109
- (this.socketPeer as Socket.SocketPeer).connect(_onSocketConnect);
110
- }
111
-
112
- internal void disconnectSocket(Action _onSocketDisconnect)
113
- {
114
- (this.socketPeer as Socket.SocketPeer).disconnect(_onSocketDisconnect);
115
- }
116
-
117
- internal void setOnEventHandler(Action<OperationEvent> _onEventHandler)
118
- {
119
- (this.socketPeer as Socket.SocketPeer).setOnEventHandler(_onEventHandler);
120
- }
121
-
122
- internal void setOnConnectHandler(Action _onConnectHandler)
123
- {
124
- (this.socketPeer as Socket.SocketPeer).setOnConnectHandler(_onConnectHandler);
125
- }
126
-
127
- internal void setOnDisconnectHandler(Action _onDisconnectHandler)
128
- {
129
- (this.socketPeer as Socket.SocketPeer).setOnDisconnectHandler(_onDisconnectHandler);
130
- }
131
-
132
- internal void removeOnConnectHandler(Action _onConnectHandler)
133
- {
134
- (this.socketPeer as Socket.SocketPeer).removeOnConnectHandler(_onConnectHandler);
135
- }
136
-
137
- internal void removeOnDisconnectHandler(Action _onDisconnectHandler)
138
- {
139
- (this.socketPeer as Socket.SocketPeer).removeOnDisconnectHandler(_onDisconnectHandler);
140
- }
141
-
142
- }
143
-
144
- }
1
+ namespace XmobiTea.GN.Networking
2
+ {
3
+ using System;
4
+ using XmobiTea.GN.Common;
5
+ using XmobiTea.GN.Constant;
6
+ using XmobiTea.GN.Entity;
7
+
8
+ /// <summary>
9
+ /// Manages networking peers for HTTP and socket communication.
10
+ /// </summary>
11
+ public partial class NetworkingPeer
12
+ {
13
+ private IPeer socketPeer; // Socket peer instance.
14
+ private IPeer httpPeer; // HTTP peer instance.
15
+
16
+ internal AuthenticateStatus authenticateStatus; // Stores authentication status.
17
+ internal string gameId;
18
+
19
+ /// <summary>
20
+ /// Calculates and returns the average ping between HTTP and socket peers.
21
+ /// </summary>
22
+ /// <returns>The average ping in milliseconds.</returns>
23
+ internal int getPing()
24
+ {
25
+ var count = 0;
26
+ var totalPing = 0;
27
+
28
+ if (this.httpPeer.isUsing())
29
+ {
30
+ count++;
31
+ totalPing += ((PeerBase)this.httpPeer).ping;
32
+ }
33
+
34
+ if (this.socketPeer.isUsing())
35
+ {
36
+ count++;
37
+ totalPing += ((PeerBase)this.socketPeer).ping;
38
+ }
39
+
40
+ return count > 0 ? totalPing / count : -1;
41
+ }
42
+
43
+ /// <summary>
44
+ /// Gets the client ID of the socket connection.
45
+ /// </summary>
46
+ /// <returns>The client ID as a string.</returns>
47
+ internal string getClientId()
48
+ {
49
+ return (this.socketPeer as Socket.SocketPeer).getClientId();
50
+ }
51
+
52
+ private long lastCurrentServerMilliseconds; // The last known server time in milliseconds.
53
+ private float lastGetCurrentMilliseconds; // The local time in seconds when the server time was last updated.
54
+
55
+ /// <summary>
56
+ /// Sets the current server time in milliseconds.
57
+ /// </summary>
58
+ /// <param name="currentServerMilliseconds">The server time in milliseconds.</param>
59
+ internal void setServerTimeMilliseconds(long currentServerMilliseconds)
60
+ {
61
+ this.lastCurrentServerMilliseconds = currentServerMilliseconds;
62
+ this.lastGetCurrentMilliseconds = UnityEngine.Time.realtimeSinceStartup;
63
+ }
64
+
65
+ /// <summary>
66
+ /// Gets the current server timestamp in milliseconds.
67
+ /// </summary>
68
+ /// <returns>The current server timestamp.</returns>
69
+ internal long getServerTimestamp()
70
+ {
71
+ return this.lastCurrentServerMilliseconds + (int)((UnityEngine.Time.realtimeSinceStartup - this.lastGetCurrentMilliseconds) * 1000);
72
+ }
73
+
74
+ /// <summary>
75
+ /// Initializes the HTTP and socket peers.
76
+ /// </summary>
77
+ internal void initPeer()
78
+ {
79
+ this.setServerTimeMilliseconds(DateTimeOffset.UtcNow.ToUnixTimeMilliseconds());
80
+
81
+ var gnServerSettings = GNNetwork.gnServerSettings;
82
+ if (gnServerSettings == null) throw new NullReferenceException("Null GN Server Settings, please find it now");
83
+
84
+ this.authenticateStatus = new AuthenticateStatus();
85
+
86
+ this.httpPeer = new Http.HttpPeer();
87
+ this.httpPeer.initPeer();
88
+
89
+ this.socketPeer = new Socket.SocketPeer();
90
+ this.socketPeer.initPeer();
91
+ }
92
+
93
+ /// <summary>
94
+ /// Processes pending operations for both HTTP and socket peers.
95
+ /// </summary>
96
+ internal void service()
97
+ {
98
+ this.httpPeer?.service();
99
+ this.socketPeer?.service();
100
+ }
101
+
102
+ /// <summary>
103
+ /// Sends a request via socket peer.
104
+ /// </summary>
105
+ internal void sendViaSocket(RequestType requestType, RequestRole requestRole, OperationRequest request, Action<OperationResponse> onResponse = null, string authToken = null, string secretKey = null, GNHashtable customTags = null)
106
+ {
107
+ if (authToken == null) authToken = GNNetwork.getAuthenticateStatus().getAuthToken();
108
+ if (secretKey == null)
109
+ {
110
+ if (requestRole == RequestRole.Admin) secretKey = GNNetwork.gnServerSettings.getAdminSecretKey();
111
+ else if (requestRole == RequestRole.Server) secretKey = GNNetwork.gnServerSettings.getServerSecretKey();
112
+ else if (requestRole == RequestRole.Client) secretKey = GNNetwork.gnServerSettings.getClientSecretKey();
113
+ }
114
+
115
+ this.socketPeer.enqueue(requestType, requestRole, request, onResponse, authToken, secretKey, customTags, this.gameId);
116
+ }
117
+
118
+ /// <summary>
119
+ /// Sends a request via HTTP peer.
120
+ /// </summary>
121
+ internal void sendViaHttp(RequestType requestType, RequestRole requestRole, OperationRequest request, Action<OperationResponse> onResponse = null, string authToken = null, string secretKey = null, GNHashtable customTags = null)
122
+ {
123
+ if (authToken == null) authToken = this.authenticateStatus.getAuthToken();
124
+ if (secretKey == null)
125
+ {
126
+ if (requestRole == RequestRole.Admin) secretKey = GNNetwork.gnServerSettings.getAdminSecretKey();
127
+ else if (requestRole == RequestRole.Server) secretKey = GNNetwork.gnServerSettings.getServerSecretKey();
128
+ else if (requestRole == RequestRole.Client) secretKey = GNNetwork.gnServerSettings.getClientSecretKey();
129
+ }
130
+
131
+ this.httpPeer.enqueue(requestType, requestRole, request, onResponse, authToken, secretKey, customTags, this.gameId);
132
+ }
133
+
134
+ /// <summary>
135
+ /// Sends an authentication request via socket.
136
+ /// </summary>
137
+ internal void sendRequestAuthSocket()
138
+ {
139
+ (this.socketPeer as Socket.SocketPeer).sendRequestAuthSocket();
140
+ }
141
+
142
+ /// <summary>
143
+ /// Connects to the socket with a specified callback.
144
+ /// </summary>
145
+ internal void connectSocket(Action _onSocketConnect)
146
+ {
147
+ (this.socketPeer as Socket.SocketPeer).connect(_onSocketConnect);
148
+ }
149
+
150
+ /// <summary>
151
+ /// Disconnects the socket with a specified callback.
152
+ /// </summary>
153
+ internal void disconnectSocket(Action _onSocketDisconnect)
154
+ {
155
+ (this.socketPeer as Socket.SocketPeer).disconnect(_onSocketDisconnect);
156
+ }
157
+
158
+ /// <summary>
159
+ /// Sets the handler for processing socket events.
160
+ /// </summary>
161
+ internal void setOnEventHandler(Action<OperationEvent> _onEventHandler)
162
+ {
163
+ (this.socketPeer as Socket.SocketPeer).setOnEventHandler(_onEventHandler);
164
+ }
165
+
166
+ /// <summary>
167
+ /// Sets a handler for socket connection events.
168
+ /// </summary>
169
+ internal void setOnConnectHandler(Action _onConnectHandler)
170
+ {
171
+ (this.socketPeer as Socket.SocketPeer).setOnConnectHandler(_onConnectHandler);
172
+ }
173
+
174
+ /// <summary>
175
+ /// Sets a handler for socket disconnection events.
176
+ /// </summary>
177
+ internal void setOnDisconnectHandler(Action _onDisconnectHandler)
178
+ {
179
+ (this.socketPeer as Socket.SocketPeer).setOnDisconnectHandler(_onDisconnectHandler);
180
+ }
181
+
182
+ /// <summary>
183
+ /// Removes the handler for socket connection events.
184
+ /// </summary>
185
+ internal void removeOnConnectHandler(Action _onConnectHandler)
186
+ {
187
+ (this.socketPeer as Socket.SocketPeer).removeOnConnectHandler(_onConnectHandler);
188
+ }
189
+
190
+ /// <summary>
191
+ /// Removes the handler for socket disconnection events.
192
+ /// </summary>
193
+ internal void removeOnDisconnectHandler(Action _onDisconnectHandler)
194
+ {
195
+ (this.socketPeer as Socket.SocketPeer).removeOnDisconnectHandler(_onDisconnectHandler);
196
+ }
197
+ }
198
+ }
@@ -1,11 +1,11 @@
1
- fileFormatVersion: 2
2
- guid: 69c4e5d71765aaa45a73e7dddac28586
3
- MonoImporter:
4
- externalObjects: {}
5
- serializedVersion: 2
6
- defaultReferences: []
7
- executionOrder: 0
8
- icon: {instanceID: 0}
9
- userData:
10
- assetBundleName:
11
- assetBundleVariant:
1
+ fileFormatVersion: 2
2
+ guid: 69c4e5d71765aaa45a73e7dddac28586
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -4,33 +4,44 @@
4
4
  using System.Collections;
5
5
  using XmobiTea.GN.Common;
6
6
  using XmobiTea.GN.Constant;
7
- using XmobiTea.GN.Entity.Response;
8
7
  using XmobiTea.GN.Helper;
9
8
 
9
+ /// <summary>
10
+ /// Provides additional functionality for managing network peers.
11
+ /// </summary>
10
12
  public partial class NetworkingPeer
11
13
  {
12
- internal const string SYNC_TS = "ts";
13
- internal const string UPLOAD_FILE = "upload";
14
- internal const string DOWNLOAD_FILE = "download";
15
- internal const string API_JSON = "api/" + Commands.RequestCmd_Json;
16
- internal const string API_MSG_PACK = "api/" + Commands.RequestCmd_MsgPack;
17
-
14
+ internal const string SYNC_TS = "ts"; // API endpoint for synchronizing timestamps.
15
+ internal const string UPLOAD_FILE = "upload"; // API endpoint for file uploads.
16
+ internal const string DOWNLOAD_FILE = "download"; // API endpoint for file downloads.
17
+ internal const string API_JSON = "api/" + Commands.RequestCmd_Json; // Base path for JSON API requests.
18
+ internal const string API_MSG_PACK = "api/" + Commands.RequestCmd_MsgPack; // Base path for MsgPack API requests.
19
+
20
+ /// <summary>
21
+ /// Synchronizes the local time with the server time by retrieving the latest server timestamp.
22
+ /// </summary>
23
+ /// <param name="onResponse">An optional callback to handle the synchronized server timestamp.</param>
18
24
  internal void syncTs(Action<long> onResponse = null)
19
25
  {
26
+ // Sends a request to the SYNC_TS endpoint using the HTTP peer.
20
27
  (this.httpPeer as Http.HttpPeer).getRequest(NetworkingPeer.SYNC_TS, httpAppResponse =>
21
28
  {
29
+ // Processes the response if there is no error.
22
30
  if (!httpAppResponse.hasError())
23
31
  {
24
- if (httpAppResponse.statusCode == 200)
32
+ if (httpAppResponse.statusCode == 200) // HTTP success status.
25
33
  {
34
+ // Parses the response text into a list and converts it to a GNArray.
26
35
  var returnDatas = (IList)Parser.Parse(httpAppResponse.text);
27
36
  var gnArray = new GNArray.Builder()
28
37
  .addAll(returnDatas)
29
38
  .build();
30
39
 
40
+ // Extracts the return code and checks if the operation was successful.
31
41
  var returnCode = gnArray.getInt(0);
32
42
  if (returnCode == ReturnCode.Ok)
33
43
  {
44
+ // Retrieves the server timestamp from the response and updates the local timestamp.
34
45
  var gnHashtable = gnArray.getGNHashtable(1);
35
46
  var newServerTimestamp = gnHashtable.getLong("1", DateTimeOffset.UtcNow.ToUnixTimeMilliseconds());
36
47
 
@@ -39,21 +50,9 @@
39
50
  }
40
51
  }
41
52
 
53
+ // Invokes the callback with the current server timestamp.
42
54
  onResponse?.Invoke(this.getServerTimestamp());
43
55
  });
44
56
  }
45
-
46
- //internal void accountLogin(string username, string password, Action<LoginOperationResponse> onResponse = null)
47
- //{
48
- // //var request = new AccountLoginOperationRequest(username, password).Build();
49
-
50
- // //SendViaHttp(request, response =>
51
- // //{
52
- // // var loginOperationResponse = new LoginOperationResponse();
53
- // // loginOperationResponse.SetupOperationResponse(response);
54
-
55
- // // onResponse?.Invoke(loginOperationResponse);
56
- // //});
57
- //}
58
57
  }
59
58
  }
@@ -1,11 +1,11 @@
1
- fileFormatVersion: 2
2
- guid: b52091d6ac295314a875773e185b6d76
3
- MonoImporter:
4
- externalObjects: {}
5
- serializedVersion: 2
6
- defaultReferences: []
7
- executionOrder: 0
8
- icon: {instanceID: 0}
9
- userData:
10
- assetBundleName:
11
- assetBundleVariant:
1
+ fileFormatVersion: 2
2
+ guid: b52091d6ac295314a875773e185b6d76
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant: