Example #1
0
        void Recv_Reconnect_Ans(System.IO.MemoryStream buffer)
        {
            string            json = System.Text.Encoding.UTF8.GetString(buffer.GetBuffer(), (int)buffer.Position, (int)(buffer.Length - buffer.Position));
            Msg_Reconnect_Ans ans  = JsonUtility.FromJson <Msg_Reconnect_Ans>(json);

            if (0 != ans.error_code)
            {
                Error(new Gamnet.Exception(ans.error_code, "fail to reconnect"));
                return;
            }
            _session_key   = ans.session_key;
            _session_token = ans.session_token;
            //RemoveSentPacket(ans.msg_seq);
            ReconnectEvent evt = new ReconnectEvent(this);

            _event_queue.Add(evt);             // already locked
        }
Example #2
0
            public override void OnRecvMsg(System.IO.MemoryStream buffer)
            {
                string            json = System.Text.Encoding.UTF8.GetString(buffer.GetBuffer(), (int)buffer.Position, (int)buffer.Length);
                Msg_Reconnect_Ans ans  = JsonUtility.FromJson <Msg_Reconnect_Ans>(json);

                if (0 != ans.error_code)
                {
                    Debug.LogError("[Session.ReconnectHandler.OnRecvMsg] reconnect fail(error_code:" + ans.error_code + ")");
                    session.Error(new Gamnet.Exception(ErrorCode.ReconnectFailError, "reconnect fail(error_code:" + ans.error_code + ")"));
                    return;
                }
                Debug.Log("[Session.ReconnectHandler.OnRecvMsg] recv reconnect ans(session_key:" + session._session_key + ", session_token:" + session._session_token + ", disconnect_state:" + session._disconnectState.ToString() + ")");
                //session._session_key = ans.session_key;
                //session._session_token = ans.session_token;

                SessionEvent evt = null;

                switch (session._disconnectState)
                {
                case DisconnectState.Pause:
                    evt = new ResumeEvent(session);
                    break;

                case DisconnectState.Handover:
                    evt = new ReconnectEvent(session);
                    break;

                case DisconnectState.Closed:
                    break;
                }

                if (null != evt)
                {
                    session._event_queue.Add(evt);                     // already locked
                }
                session._disconnectState = DisconnectState.Invalid;
            }