예제 #1
0
        public CBuffer Assembly()
        {
            CBuffer buf = CBuffer.Create(HeaderLength + BodyBuffer.Length);

            buf.Fill(HeaderBuffer);
            buf.Fill(BodyBuffer);
            return(buf);
        }
예제 #2
0
        protected void _AssemblyHeader()
        {
            byte[] msgID = BitConverter.GetBytes(HeadID);
            HeaderBuffer.Fill(msgID, 2);

            byte[] len = BitConverter.GetBytes(Length);
            HeaderBuffer.Fill(len, 2);
        }
예제 #3
0
        public bool FillPack(byte[] buffer, ref int offset, ref int count)
        {
            if (!this.HeaderBuffer.IsFull)
            {
                int fillSize = HeaderBuffer.Fill(buffer, offset, count, true);
                offset += fillSize;
                count  -= fillSize;

                if (HeaderBuffer.IsFull)
                {
                    _ParseHeader();//解析头以后才知道body的长度
                    BodyBuffer = CBuffer.Create((int)this.Length);
                }
                else
                {
                    //头部数据没接收完成,继续解析
                    return(false);
                }
            }

            if (!this.BodyBuffer.IsFull)
            {
                int fillSize = BodyBuffer.Fill(buffer, offset, count, true);
                offset += fillSize;
                count  -= fillSize;
            }

            return(this.BodyBuffer.IsFull);
        }
예제 #4
0
        public CBuffer Clone()
        {
            CBuffer buf = CBuffer.Create(BufSize);

            buf.Fill(this);
            return(buf);
        }