bool OnDataReceived(NFStringRingBuffer sb) { head.Reset(); if (sb.Pop(head.GetHeadBytes(), ConstDefine.NF_PACKET_HEAD_SIZE)) { if (head.DeCode() && head.unDataLen == sb.Size() + ConstDefine.NF_PACKET_HEAD_SIZE) { Int32 nBodyLen = (Int32)sb.Size(); if (nBodyLen > 0) { dataReceivedBodyStream.SetLength(0); dataReceivedBodyStream.Position = 0; sb.ToMemoryStream(dataReceivedBodyStream); OnMessageEvent(head, dataReceivedBodyStream); return(true); } else { //space packet, thats impossible } } } return(false); }
void OnDataReceived() { if (mPacket.Size() >= ConstDefine.NF_PACKET_HEAD_SIZE) { head.Reset(); mPacket.Pop(head.GetHeadBytes(), ConstDefine.NF_PACKET_HEAD_SIZE, true); if (head.DeCode()) { if (head.unDataLen == mPacket.Size()) { body_and_head.Clear(); body_and_head.Push(mPacket, (int)head.unDataLen); if (false == OnDataReceived(body_and_head)) { OnClientDisconnect(new NFNetEventParams()); } } else if (mPacket.Size() > head.unDataLen) { body_and_head.Clear(); body_and_head.Push(mPacket, (int)head.unDataLen); if (false == OnDataReceived(body_and_head)) { OnClientDisconnect(new NFNetEventParams()); } OnDataReceived(); } } } }
public bool Push(NFStringRingBuffer source, int size, bool readOnly = false) { if (size > source.Size()) { return(false); } if (m_trasferTempData.Length < size) { m_trasferTempData = new byte[size]; } source.Pop(m_trasferTempData, size, readOnly); this.Push(m_trasferTempData, size); return(true); }
//a whole message bool OnDataReceived(NFStringRingBuffer sb) { head.Reset(); if (sb.Pop(head.GetHeadBytes(), ConstDefine.NF_PACKET_HEAD_SIZE)) { if (head.DeCode() && head.unDataLen == sb.Size() + ConstDefine.NF_PACKET_HEAD_SIZE) { Int32 nBodyLen = (Int32)sb.Size(); if (nBodyLen > 0) { if (head.unMsgID == 505) { System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区 long timeStamp = (long)(DateTime.Now - startTime).TotalMilliseconds; // 相差秒数 Debug.Log("receive model msg " + timeStamp); Debug.Log("start ToMemoryStream "); } dataReceivedBodyStream.SetLength(0); dataReceivedBodyStream.Position = 0; sb.ToMemoryStream(dataReceivedBodyStream); if (head.unMsgID == 505) { System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区 long timeStamp = (long)(DateTime.Now - startTime).TotalMilliseconds; // 相差秒数 Debug.Log("after ToMemoryStream " + timeStamp); } OnMessageEvent(head, dataReceivedBodyStream); return(true); } else { //space packet, thats impossible } } } return(false); }