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); }
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); }
public NFSocketPacket() { sb = new NFStringRingBuffer(ConstDefine.NF_PACKET_BUFF_SIZE); }