void CheckBuffer(int requireSize) { if (_len - _pos < requireSize) { if (_extend) { var newdata = new byte[2 * _buffer.Length + requireSize]; WireFormat.CopyBytes(_buffer, newdata, 0, 0, _buffer.Length); _len = newdata.Length; _buffer = newdata; } else { throw new Exception("No enough buffer"); } } }
public void ReadBytes(WireFormat.WireType wt, ref byte[] value) { if (wt == WireFormat.WireType.Bytes) { var count = ReadVarint32(); if (value == null) { value = new byte[count]; } WireFormat.CopyBytes(_buffer, value, _pos, 0, (int)count); _pos += (int)count; } else { throw new Exception("Invalid Wireformat"); } }
internal void WriteRawBytes(byte[] value, int length) { CheckBuffer(length); WireFormat.CopyBytes(value, _buffer, 0, _pos, length); _pos += length; }