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); } }
public void StopReceiveMessage() { if (m_recMsgThread != null && m_recMsgThread.IsAlive) { m_recMsgThread.Abort(); DebugQy.Log("end receive in protocol."); } }
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); }
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(); }
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); } }
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"); }
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; } }
private void m_PostRequest(string url, string message) { DebugQy.Log("Post to master :" + message); m_EasyToUse_Web.PostMessage(url, message); }