Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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();
                    }
                }
            }
        }
Esempio n. 3
0
        //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 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);
        }