/** * RPCの切断検出 * * @param id ID * @param state 切断状態 * * 切断状態により、第2引数の state に以下のいずれかの値が指定される * DISCONNECT_STATE_SOCKET ソケットレベルでの切断 * DISCONNECT_STATE_RPC RPC接続時に Disconnect() を実行したことによる切断 * DISCONNECT_STATE_RPC_TIMEOUT RPCヘルスチェックでのタイムアウト * * 第1引数の id が state の値により、意味合いが変わる * ソケットレベルでの切断 自分(クライアント)のPUUID * RPC接続時に Disconnect() を実行したことによる切断 接続先(クライアント、サーバー)のPUUID * RPCヘルスチェックでのタイムアウト 接続先(クライアント、サーバー)のPUUID */ protected override void OnDisconnectedRPC(UInt64 id, DISCONNECT_STATE state) { Logger.MLNLOG_DEBUG("OnDisconnectedRPC id=0x" + Utility.ToHex(id) + ", state=" + state); switch (state) { case DISCONNECT_STATE.DISCONNECT_STATE_SOCKET: { // ソケットレベルでの切断 m_IsBattle = false; } break; case DISCONNECT_STATE.DISCONNECT_STATE_RPC: { // RPC接続時に Disconnect() を実行したことによる切断 // 何もしない } break; case RPCBasePU.DISCONNECT_STATE.DISCONNECT_STATE_RPC_TIMEOUT: { // RPCヘルスチェックでのタイムアウト // 何もしない } break; } base.OnDisconnectedRPC(id, state); }
public void Disconnect(DISCONNECT_STATE _DisConnect_State, String Error_Note = "") { if (Net_Script == null) { Debug.Log("Net_Script = 널"); return; } else { Debug.Log("Net_Script = 널아님"); if (_DisConnect_State == DISCONNECT_STATE.IDLE) { DisConnect_State = DISCONNECT_STATE.ERROR; Operation_State = MMSERVER_STATE.ERROR; if (Net_Script != null) { Net_Script.Disconnect(); } Debug.LogError("Disconnet_Note : " + Error_Note); } else if (_DisConnect_State == DISCONNECT_STATE.NORMALITY) { if (Net_Script != null) { Net_Script.Disconnect(); } Debug.LogError("Disconnet_Note : " + Error_Note); } } }
/** * RPCの切断検出 * * @param id ID * @param state 切断状態 * * 切断状態により、第2引数の state に以下のいずれかの値が指定される * DISCONNECT_STATE_SOCKET ソケットレベルでの切断 * DISCONNECT_STATE_RPC RPC接続時に Disconnect() を実行したことによる切断 * DISCONNECT_STATE_RPC_TIMEOUT RPCヘルスチェックでのタイムアウト * * 第1引数の id が state の値により、意味合いが変わる * ソケットレベルでの切断 自分(クライアント)のPUUID * RPC接続時に Disconnect() を実行したことによる切断 接続先(クライアント、サーバー)のPUUID * RPCヘルスチェックでのタイムアウト 接続先(クライアント、サーバー)のPUUID */ protected override void OnDisconnectedRPC( UInt64 id, DISCONNECT_STATE state ) { Logger.MLNLOG_DEBUG( "OnDisconnectedRPC id=0x"+ Utility.ToHex( id ) +", state="+ state ); switch ( state ){ case DISCONNECT_STATE.DISCONNECT_STATE_SOCKET:{ // ソケットレベルでの切断 m_IsBattle = false; }break; case DISCONNECT_STATE.DISCONNECT_STATE_RPC:{ // RPC接続時に Disconnect() を実行したことによる切断 // 何もしない }break; case RPCBasePU.DISCONNECT_STATE.DISCONNECT_STATE_RPC_TIMEOUT:{ // RPCヘルスチェックでのタイムアウト // 何もしない }break; } base.OnDisconnectedRPC( id, state ); }
void ConnectLoginServer_Operation() { switch (ConnectLogin_State) { case MMSERVER_STATE.IDEL: break; case MMSERVER_STATE.CONNECT_FAIL: break; case MMSERVER_STATE.RECONNECT_START: //테스트2초용 //if (TimeCount(ref connecting_Time, 2.0f)) { Start_mainMenuServer(); //ConnectLogin_State = MMSERVER_STATE.IDEL; connecting_Time = 0f; } break; case MMSERVER_STATE.CONNECT_START: mainMenuServerConnect(); ConnectLogin_State = MMSERVER_STATE.CONNECTING; UserEditor.Getsingleton.EditLog("네트웍 CONNECT_START"); break; case MMSERVER_STATE.CONNECTING: if (Net_Script.IsConnected) { UserEditor.Getsingleton.EditLog("네트웍 접속 완료"); //네트웍 이상없으니 DIsconnect state 를 IDLE로 DisConnect_State = DISCONNECT_STATE.IDLE; connecting_Time = 0f; ConnectLogin_State = MMSERVER_STATE.LOGIN_START; } else { //연결시도 체크 if (connectingTry_Count > 1) { //재연결시도 실패 해서 그냥 타이틀로 돌려보냄 ConnetingRryFailProcess(); } else { if (TimeCount(ref connecting_Time, 10.0f)) { UserEditor.Getsingleton.EditLog("네트웍 접속 시도 : " + connectingTry_Count + 1); UserEditor.Getsingleton.EditLog("일정 시간 접속 불가상태여서 끊어버린다"); Disconnect(DISCONNECT_STATE.NORMALITY); ConnectLogin_State = MMSERVER_STATE.CONNECT_START; connectingTry_Count++; } } } break; case MMSERVER_STATE.LOGIN_START: //로그인위해 서버로 로그인정보보내기 Send_CTS_Login(); ConnectLogin_State = MMSERVER_STATE.IDEL; break; case MMSERVER_STATE.LOGIN_OK: ConnectLogin_State = MMSERVER_STATE.LOGIN_COMPLETE; //로그인됫으니 , 리텐션 시작 if (ct_Retention == null) { ct_Retention = Retention_Checking(); StartCoroutine(ct_Retention); } else { StopCoroutine(ct_Retention); ct_Retention = null; ct_Retention = Retention_Checking(); StartCoroutine(ct_Retention); } UserEditor.Getsingleton.EditLog("리텐션 시작"); break; case MMSERVER_STATE.LOGIN_COMPLETE: connectingTry_Count = 0; break; } }