public void GeneratePostData_Base_NullProperty_Test() { var dto = new ClientRequestBase { Method = null }; Assert.Throws <ArgumentNullException>(() => dto.GeneratePostData(_apiKey, _secretKey)); }
public void OnBeginMatch() { ClientRequestBase req = null; req = new MatchRequest(ClientID, SelectBuildManager.Instance.CurrentSelectedBuildInfo.BuildID); SendMessage(req); ClientState = ClientStates.Matching; }
public virtual void ReceiveMessage(ClientRequestBase request) { if (isClosed) { return; } ReceiveRequestsQueue.Enqueue(request); Response(); }
public void Send() // 每帧调用 { if (SendRequestsQueue.Count > 0) { ClientRequestBase request = SendRequestsQueue.Dequeue(); Thread thread = new Thread(SendRequest); thread.IsBackground = true; thread.Start(request); } }
public void GeneratePostData_Base_Test() { var dto = new ClientRequestBase { Method = Methods.delete_tag, Expires = DateTime.Now, Timestamp = DateTime.Now, Version = 1 }; string data = dto.GeneratePostData(_apiKey, _secretKey); Assert.IsNotNullOrEmpty(data); }
public void Send(object obj) { ClientRequestBase request = (ClientRequestBase)obj; if (ServerSocket == null) { ClientLog.Instance.PrintError("[C]Server socket is null"); return; } if (!ServerSocket.Connected) { ClientLog.Instance.PrintError("[C]Not connected to server socket"); Closed(); return; } try { byte[] data = SerializeRequest(request); IAsyncResult asyncSend = ServerSocket.BeginSend(data, 0, data.Length, SocketFlags.None, new AsyncCallback(SendCallback), ServerSocket); bool success = asyncSend.AsyncWaitHandle.WaitOne(5000, true); if (!success) { Closed(); } string log = "SendToServer: <" + request.GetProtocol() + "> " + request.DeserializeLog(); ClientLog.Instance.Print(log); } catch (Exception e) { ClientLog.Instance.PrintError("[C]Send error : " + e.ToString()); RoundManager.Instance.StopGame(); } }
/// <summary> /// Dispose of all request received before game start /// ServerGameManager will dispose of others during games. /// </summary> public void Response(ClientRequestBase r) { if (isClosed) { return; } if (BattleGameManager != null && BattleGameManager.IsStopped) { BattleGameManager.StopGame(); } if (ClientState == ProxyBase.ClientStates.Playing) { if (BattleGameManager == null) { return; } try { if (BattleGameManager.CurrentPlayer == BattleGameManager.GetPlayerByClientId(ClientID)) { switch (r) { case WinDirectlyRequest req: BattleGameManager?.OnWinDirectlyRequest(req, MyPlayer); break; case EndRoundRequest req: BattleGameManager?.OnEndRoundRequest(req); break; case SummonMechRequest req: BattleGameManager?.OnClientSummonMechRequest(req); break; case EquipWeaponRequest req: BattleGameManager?.OnClientEquipWeaponRequest(req); break; case EquipShieldRequest req: BattleGameManager?.OnClientEquipShieldRequest(req); break; case EquipPackRequest req: BattleGameManager?.OnClientEquipPackRequest(req); break; case EquipMARequest req: BattleGameManager?.OnClientEquipMARequest(req); break; case UseSpellCardRequest req: BattleGameManager?.OnClientUseSpellCardRequest(req); break; case UseSpellCardToMechRequest req: BattleGameManager?.OnClientUseSpellCardToMechRequest(req); break; case UseSpellCardToShipRequest req: BattleGameManager?.OnClientUseSpellCardToShipRequest(req); break; case UseSpellCardToEquipRequest req: BattleGameManager?.OnClientUseSpellCardToEquipRequest(req); break; case LeaveGameRequest req: //quit game normally BattleGameManager?.OnLeaveGameRequest(req); break; case MechAttackMechRequest req: BattleGameManager?.OnClientMechAttackMechRequest(req); break; case MechAttackShipRequest req: BattleGameManager?.OnClientMechAttackShipRequest(req); break; } } } catch (Exception e) { DebugLog.PrintError(e.ToString()); if (BattleGameManager != null && !BattleGameManager.IsStopped) { BattleGameManager.OnEndGameByServerError(); BattleGameManager.StopGame(); } BattleGameManager = null; } } }
private string Execute(ClientRequestBase request) { return(Execute(XmlUtilHelper.SerializedEntity(request))); }
private void PrepareRequest(ClientRequestBase request) { request.UserCredential = new ApiCredentialInfo(); request.UserCredential.Key = configuration.ApiKey; request.UserCredential.Pwd = configuration.ApiSecret; }
private void SendMessageToLocalGameProxy(ClientRequestBase request) { SendRequest(request); }
private void SendMessageToServer(ClientRequestBase request) { SendRequestsQueue.Enqueue(request); }
public void ReceiveMessage(ClientRequestBase request) { }
/// <summary> /// Dispose of all request received before game start /// ServerGameManager will dispose of others during games. /// </summary> protected override void Response() { while (ReceiveRequestsQueue.Count > 0) { ClientRequestBase request = ReceiveRequestsQueue.Dequeue(); // Server 端特例覆写GameProxy switch (request) { case RegisterRequest r: //for online mode { ServerLog.Instance.PrintClientStates("Client " + ClientID + " state: " + ClientState); if (ClientState != ClientStates.GetId) { Server.SV.SGMM.RemoveGame(this); ClientState = ClientStates.GetId; } bool suc = UserDatabase.Instance.AddUser(r.username, r.password); RegisterResultRequest response = new RegisterResultRequest(suc); SendMessage(response); break; } case LoginRequest r: { ServerLog.Instance.PrintClientStates("Client " + ClientID + " state: " + ClientState); if (ClientState != ClientStates.GetId) { Server.SV.SGMM.RemoveGame(this); ClientState = ClientStates.GetId; } if (ClientState == ClientStates.GetId) { LoginResultRequest response; string password = UserDatabase.Instance.GetUserPasswordByUsername(r.username); if (password != null) { if (password == r.password) { bool suc = UserDatabase.Instance.AddLoginUser(ClientID, r.username); if (suc) { response = new LoginResultRequest(r.username, LoginResultRequest.StateCodes.Success); SendMessage(response); ClientState = ClientStates.Login; UserName = r.username; if (BuildStoryDatabase.Instance.PlayerStoryStates.ContainsKey(UserName)) { Story story = BuildStoryDatabase.Instance.PlayerStoryStates[UserName]; ClientBuildInfosRequest request1 = new ClientBuildInfosRequest(BuildStoryDatabase.Instance.GetPlayerBuilds(UserName), GamePlaySettings.OnlineGamePlaySettings, true, story); SendMessage(request1); } else { ClientBuildInfosRequest request1 = new ClientBuildInfosRequest(BuildStoryDatabase.Instance.GetPlayerBuilds(UserName), GamePlaySettings.OnlineGamePlaySettings); SendMessage(request1); } } else { response = new LoginResultRequest(r.username, LoginResultRequest.StateCodes.AlreadyOnline); SendMessage(response); } } else { response = new LoginResultRequest(r.username, LoginResultRequest.StateCodes.WrongPassword); SendMessage(response); } } else { response = new LoginResultRequest(r.username, LoginResultRequest.StateCodes.UnexistedUser); SendMessage(response); } } break; } case LogoutRequest r: { ServerLog.Instance.PrintClientStates("Client " + ClientID + " state: " + ClientState); LogoutResultRequest response; if (ClientState != ClientStates.GetId) { Server.SV.SGMM.RemoveGame(this); bool suc = UserDatabase.Instance.RemoveLoginUser(ClientID); ClientState = ClientStates.GetId; response = new LogoutResultRequest(r.username, suc); } else { response = new LogoutResultRequest(r.username, false); } SendMessage(response); break; } case MatchRequest r: ServerLog.Instance.PrintClientStates("Client " + ClientID + " state: " + ClientState); if (ClientState == ClientStates.Playing) { Server.SV.SGMM.RemoveGame(this); ClientState = ClientStates.Login; } if (ClientState == ClientStates.Login) { GameProxy.BattleProxy.BuildInfo = BuildStoryDatabase.Instance.GetBuildInfoByID(r.buildID); ClientState = ClientStates.Matching; Server.SV.SGMM.OnClientMatchGames(this); } break; case CancelMatchRequest _: ServerLog.Instance.PrintClientStates("Client " + ClientID + " state: " + ClientState); if (ClientState == ClientStates.Playing) { Server.SV.SGMM.RemoveGame(this); ClientState = ClientStates.Login; } if (ClientState == ClientStates.Matching) { ClientState = ClientStates.Login; Server.SV.SGMM.OnClientCancelMatch(this); } break; default: GameProxy.ReceiveRequest(request); break; } } }