예제 #1
0
        private void ReadBody(byte[] bytes, int start, int length)
        {
            _buffObject.WriteBytes(bytes, start, length);

            var idx = _buffObject.CheckLineFeed(LineFeed);

            if (idx >= 0)
            {
                var len       = idx;
                var requested = new byte[len];
                Array.Copy(_buffObject.buffer, 0, requested, 0, len);
                _protocol.ProcessMessage(requested);

                idx += 1;
                if (idx < _buffObject.offset)
                {
                    //多出来些数据
                    len = _buffObject.offset - idx;
                    var v = new byte[len];
                    Array.Copy(_buffObject.buffer, idx, v, 0, len);
                    _buffObject.offset = 0;
                    ProcessBytes(v, 0, len);
                }
                else
                {
                    _buffObject.offset = 0;
                }
            }

            _transportState = TransportState.ReadBody;
        }