示例#1
0
        private void m_ReceiveBodyDataCallBack(ISocketQy sender, ISocketRecEventArgs args)
        {
            int currentBufferSize = args.NeedRecvBufferSize;

            if (currentBufferSize != m_nextPackageSize)
            {
                DebugQy.LogWarning("m_ReceiveBodyDataCallBack(): rec buffer size != 'BODY_BUFFER_SIZE' . Please check your operate in receive.");
                DebugQy.LogWarning("'I Has stop your receive function !' ------- from writer. ");
                if (RecMsgFailedEvent != null)
                {
                    RecMsgFailedEvent(sender, args);
                }
                StopReceiveMessage();
                return;
            }
            DebugQy.Log("'BODY_PACKAGE' has received.");
            m_nextHeadOrBody  = HEAD_BODY_PACKET.HEAD;
            m_nextPackageSize = HEAD_BUFFER_SIZE;
            DebugQy.Log("start receive [BODY] :-------- thread.set      ↑↑↑↑↑\n ");
            m_recEventWaitHandle.Set();
            if (RecMsgCompleteEvent != null)
            {
                RecMsgCompleteEvent(sender, args);
            }
        }
示例#2
0
 public void StopReceiveMessage()
 {
     if (m_recMsgThread != null && m_recMsgThread.IsAlive)
     {
         m_recMsgThread.Abort();
         DebugQy.Log("end receive in protocol.");
     }
 }
示例#3
0
        private bool m_GetIntFromStrWith_SCALE_OF_BYTE_SYSTEM(string fromStr, out int targetValue)
        {
            bool _n_tryPaseSuc = false;

            targetValue = 0;
            for (int idex = 0; idex < HEAD_DATA_NUMB; ++idex)
            {
                int tempValue;
                _n_tryPaseSuc = int.TryParse(fromStr.Substring(HEAD_DATA_UNIT * idex, HEAD_DATA_UNIT), out tempValue);
                if (!_n_tryPaseSuc)
                {
                    return(false);
                }
                int fourInt = tempValue * (int)Math.Pow(SCALE_OF_BYTE_SYSTEM, HEAD_DATA_NUMB - 1 - idex);
                targetValue += fourInt;
            }
            DebugQy.Log("Receive Head  4_Bytes: " + targetValue);
            return(true);
        }
示例#4
0
        private void m_BenginReceive(ISocketQy receiveObj, HEAD_BODY_PACKET choosePackage, int bufferSize)
        {
            switch (choosePackage)
            {
            case HEAD_BODY_PACKET.HEAD:
                DebugQy.Log("start receive HEAD :-------- thread.waitOne! ↓↓↓↓↓");
                receiveObj.TryAnsyncReceiveMessage(bufferSize, "HEAD");
                break;

            case HEAD_BODY_PACKET.BODY:
                DebugQy.Log("start receive BODY :-------- thread.waitOne! ↓↓↓↓↓");
                receiveObj.TryAnsyncReceiveMessage(bufferSize, "BODY");
                break;

            default:
                break;
            }
            m_recEventWaitHandle.WaitOne();
        }
示例#5
0
        private void m_RequestComleteCallBack(object sender, WebRequestArgsQy eventArgs)
        {
            DebugQy.Log("Request CallBack .");
            bool isMesRight = m_datahandle.WebDataHandle(eventArgs.Message, out m_masterMsg);

            if (isMesRight)
            {
                m_deviceId = m_masterMsg.deviceId;
                m_DataEventTrigger(DATA_STATUS_CODE.DATA_BUILD_ROOM_T,
                                   "Build room success.: your device:" + m_deviceId + "\n"
                                   + "RoomId : " + m_masterMsg.roomId + "\n"
                                   + "gameSign : " + m_masterMsg.gameSign);
                //主控回调数据正确,可触发成功事件
                StartSocketNetWork(m_masterMsg.WMIp, int.Parse(m_masterMsg.WMPort));
            }
            else
            {
                //主控回调数据错误,可触发失败事件
                m_DataEventTrigger(DATA_STATUS_CODE.DATA_BUILD_ROOM_F, "Build room failed : " + eventArgs.Message);
            }
        }
示例#6
0
        private void m_Post(byte[] postBuffer)
        {
            HttpWebPostArgs _postEventArgs = new HttpWebPostArgs();
            string          errorMessage   = string.Empty;
            FIRING_D_C_F    _firEventType  = FIRING_D_C_F.DEFAULT;

            DebugQy.Log("m_Post(): buffer message in.");
            m_httpRequest.KeepAlive = false;
            m_httpRequest.Method    = "POST";
            //m_httpRequest.ContentType = "application/x-www-form-urlencoded";
            m_httpRequest.ContentType = "application/json";
            Stream _writer;

            _writer = m_httpRequest.GetRequestStream(); //任何尝试访问该方法时,不在子代类中重写该方法时:会引发NotImplementedException

            try
            {
                _writer.Write(postBuffer, 0, postBuffer.Length);
                _writer.Close();
                DebugQy.Log("m_Post(): buffer has posted.");
            }
            catch (ArgumentNullException ee)
            {
                errorMessage = "---  ArgumentNullException  --- :"
                               + "buffer is null"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (ArgumentOutOfRangeException ee)
            {
                errorMessage = "---  ArgumentOutOfRangeException  --- :"
                               + "offset 或 count 为负。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (ArgumentException ee)
            {
                errorMessage = "---  ArgumentException  --- :"
                               + "总和 offset 和 count 大于缓冲区长度。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (IOException ee)
            {
                errorMessage = "---  IOException  --- :"
                               + "将出现 I / O 错误,如找不到指定的文件。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (NotSupportedException ee)
            {
                errorMessage = "---  NotSupportedException  --- :"
                               + "流不支持写入。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (Exception ee)
            {
                errorMessage = "---  Unknown exception  --- :"
                               + "Firing other unknown exception !!!!!!"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            if (_firEventType == FIRING_D_C_F.FIR_FAILED)
            {
                _postEventArgs.SetErrMessage(errorMessage);
                m_PostEventFiring(_firEventType, _postEventArgs, "m_Post");
                return;
            }
            HttpWebResponse _httpResponse   = m_httpRequest.GetResponse() as HttpWebResponse;
            Stream          _responseStream = _httpResponse.GetResponseStream();

            try
            {
                ///TODO:2016/12/19这句话报错,考虑后期流媒体怎么处理!!!!!
                ///------------解决方案:转码一次,后期考虑字节的直接操作,性能 性能 性能!!!;
                /// int length = (int)_responseStream.Length;
                StreamReader _reader = new StreamReader(_responseStream);
                string       aa      = _reader.ReadToEnd();
                byte[]       buffer  = Encoding.UTF8.GetBytes(aa);
                DebugQy.Log("RquestMessage buffer length :" + buffer.Length);
                _responseStream.Close();
                _postEventArgs.SetBuffer(buffer);
                _firEventType = FIRING_D_C_F.FIR_COMPLETE;
                errorMessage  = "---  no mistake  ---";
            }
            catch (ArgumentNullException ee)
            {
                errorMessage = "---  ArgumentNullException  --- :"
                               + "buffer is null"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (ArgumentOutOfRangeException ee)
            {
                errorMessage = "---  ArgumentOutOfRangeException  --- :"
                               + "offset 或 count 为负。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (ArgumentException ee)
            {
                errorMessage = "---  ArgumentException  --- :"
                               + "总和 offset 和 count 大于缓冲区长度。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (IOException ee)
            {
                errorMessage = "---  IOException  --- :"
                               + "将出现 I / O 错误,如找不到指定的文件。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (NotSupportedException ee)
            {
                errorMessage = "---  NotSupportedException  --- :"
                               + "流不支持读取。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (Exception ee)
            {
                errorMessage = "---  Unknown exception  --- :"
                               + "Firing other unknown exception !!!!!!"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            _postEventArgs.SetErrMessage(errorMessage);
            m_PostEventFiring(_firEventType, _postEventArgs, "m_ReceiveMsgCallBack");
        }
示例#7
0
        private void m_SocketReceiveEventHandle(COMPLETE_OR_FAILED isComplete, string message)
        {
            DebugQy.LogTag("【LAM】m_SocketReceiveEventHandle", "REC CALL BACK:" + message);
            switch (isComplete)
            {
            case COMPLETE_OR_FAILED.DEFAULT:
                DebugQy.LogError("【LAM】m_SocketReceiveEventHandle" + "---REC CALL BACK:" + message);
                break;

            case COMPLETE_OR_FAILED.COMPLETE:
                ClearDataFormat _clearData;
                bool            _isSucc = m_datahandle.SocketStrDataHandle(message, out _clearData);
                //if (_clearData.Type != REV_MSG_TYPE.HEART_BEAT)
                //{
                //    DebugQy.LeoLog("<color=red>>>>>>>>:" + message + "</color>");
                //}
                if (_isSucc)
                {
                    switch (_clearData.Type)
                    {
                    case REV_MSG_TYPE.DEFAULT:
                        DebugQy.LogError("【LAM】case :0" + "---REC CALL BACK:" + message + "\n"
                                         + "type is not clear.");
                        break;

                    case REV_MSG_TYPE.HEART_BEAT:                              //20000 ---- 收到心跳信息
                        DebugQy.Log("【LAM】case :20000" + "HeatBeat:");
                        m_HeartBeatReturn(_clearData.Time);
                        return;

                    case REV_MSG_TYPE.ROOM_VERIFICATION_T:                      //21100 ---- 收到房间验证 正确
                        DebugQy.LogTag("【LAM】case :21100", "Room verification right.");
                        string codeStr = WEB_BASE_URL + "deviceId=" + m_deviceId + "&gameId=" + m_gameId + "&socketType=1";
                        m_isConnected = true;
                        m_DataEventTrigger(DATA_STATUS_CODE.DATA_ROOM_VERIFY_T, codeStr);
                        break;

                    case REV_MSG_TYPE.ROOM_VERIFICATION_F:                      //21101 ---- 收到房间验证 错误
                        DebugQy.LogTag("【LAM】case :21101", "Room verification wrong.");
                        m_DataEventTrigger(DATA_STATUS_CODE.DATA_ROOM_VERIFY_F, "Verification failed.");
                        break;

                    case REV_MSG_TYPE.AWARD_LIST_T:                             //21200 ---- 收到 奖励申请 正确
                        DebugQy.LogTag("【LAM】case :21200", "奖励申请 回复");
                        m_DataEventTrigger(DATA_STATUS_CODE.DATA_AWARD_LIST_T, _clearData.Msg);
                        break;

                    case REV_MSG_TYPE.AWARD_LIST_F:                             //21201 ---- 收到 奖励申请 错误
                        DebugQy.LogTag("【LAM】case :21201", "奖励申请 回复");
                        m_DataEventTrigger(DATA_STATUS_CODE.DATA_AWARD_LIST_F, "Request award list failed.");
                        break;

                    case REV_MSG_TYPE.ROOM_STATUS_T:                            //22000 ---- 房间状态推送 正确
                        DebugQy.LogTag("【LAM】case :22000", "房间状态 回复");
                        m_DataEventTrigger(DATA_STATUS_CODE.DATA_ROOM_STATUS_T, _clearData.Msg);
                        break;

                    case REV_MSG_TYPE.ROOM_STATUS_F:                            //22001 ---- 房间状态推送 错误
                        DebugQy.LogTag("【LAM】case :22001", "房间状态 回复");
                        m_DataEventTrigger(DATA_STATUS_CODE.DATA_ROOM_STATUS_F, "Push room status failed.");
                        break;

                    case REV_MSG_TYPE.SUMMARIZE_T:                              //22100 ---- 收到 排行榜 正确
                        DebugQy.LogTag("【LAM】case :22100", "汇总数据 回复");
                        m_DataEventTrigger(DATA_STATUS_CODE.DATA_SUMMARIZE_T, _clearData.Msg);
                        break;

                    case REV_MSG_TYPE.SUMMARIZE_F:                              //22101 ---- 收到 排行榜 错误
                        DebugQy.LogTag("【LAM】case :22101", "汇总数据 回复");
                        m_DataEventTrigger(DATA_STATUS_CODE.DATA_SUMMARIZE_F, "Push rank list failed.");
                        break;

                    case REV_MSG_TYPE.PC_H5_T:                                  //40000 ---- 用户数据 正确
                        DebugQy.LogTag("【LAM】case :40000", "用户数据 回复");
                        m_DataEventTrigger(DATA_STATUS_CODE.DATA_CUSTOM_MSG_T, _clearData.Msg);
                        break;

                    case REV_MSG_TYPE.PC_H5_F:                                  //40001 ---- 用户数据 错误
                        DebugQy.LogTag("【LAM】case :40001", "用户数据 回复");
                        m_DataEventTrigger(DATA_STATUS_CODE.DATA_CUSTOM_MSG_F, "Recv user message failed.");
                        break;

                    case REV_MSG_TYPE.H5_LINK_BROKEN:                                //23000 ---- H5 断链 链接
                        DebugQy.LogTag("【LAM】case :23000", "用户断开链接信息");
                        m_DataEventTrigger(DATA_STATUS_CODE.LINK_USER_BROKEN, _clearData.Msg);
                        break;

                    default:
                        DebugQy.LogWarning("【LAM】Can not clear the type");
                        break;
                    }
                }
                else
                {
                    DebugQy.LogWarning("m_SocketSendEventHandle: Some format is wrong.check the message :" + message);
                }
                break;

            case COMPLETE_OR_FAILED.FAILED:
                UnityEngine.Debug.Log("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!:" + message);
                //接收失败逻辑处理
                m_LinkFailedEventTrigger((int)LINK_STATUS_CODE.SOCKET_REV_F);
                break;
            }
        }
示例#8
0
 private void m_PostRequest(string url, string message)
 {
     DebugQy.Log("Post to master :" + message);
     m_EasyToUse_Web.PostMessage(url, message);
 }