Exemplo n.º 1
0
        /**
         * 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);
            }
        }
    }
Exemplo n.º 3
0
        /**
         * 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;
        }
    }