49 if (somIndex == -1)
return false;
54 int remaining = _position - somIndex;
55 Array.Copy(_buffer, somIndex, _buffer, 0, remaining);
56 _position = remaining;
60 if (_position < MinPacketLength)
return false;
63 int length = _buffer[2] | (_buffer[3] << 8);
66 if (length < MinPacketLength || length > MaxPacketLength)
69 Array.Copy(_buffer, 1, _buffer, 0, _position - 1);
75 if (_position < length)
return false;
78 packet =
new byte[length];
79 Array.Copy(_buffer, 0, packet, 0, length);
82 int remainingAfter = _position - length;
83 if (remainingAfter > 0)
84 Array.Copy(_buffer, length, _buffer, 0, remainingAfter);
85 _position = remainingAfter;
95 public void Append(
byte[] data,
int count)
97 if (_position + count > _buffer.Length)
103 Array.Copy(_buffer, lastSom, _buffer, 0, _position - lastSom);
104 _position -= lastSom;
112 Array.Copy(data, 0, _buffer, _position, count);