mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-20 11:45:43 +08:00
improve error messages
This commit is contained in:
@@ -20,6 +20,7 @@ namespace MQTTnet.Serializer
|
|||||||
|
|
||||||
public byte ReadByte()
|
public byte ReadByte()
|
||||||
{
|
{
|
||||||
|
ValidateReceiveBuffer(1);
|
||||||
return _buffer[_offset++];
|
return _buffer[_offset++];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,6 +31,8 @@ namespace MQTTnet.Serializer
|
|||||||
|
|
||||||
public ushort ReadUInt16()
|
public ushort ReadUInt16()
|
||||||
{
|
{
|
||||||
|
ValidateReceiveBuffer(2);
|
||||||
|
|
||||||
var msb = _buffer[_offset++];
|
var msb = _buffer[_offset++];
|
||||||
var lsb = _buffer[_offset++];
|
var lsb = _buffer[_offset++];
|
||||||
|
|
||||||
@@ -40,12 +43,22 @@ namespace MQTTnet.Serializer
|
|||||||
{
|
{
|
||||||
var length = ReadUInt16();
|
var length = ReadUInt16();
|
||||||
|
|
||||||
|
ValidateReceiveBuffer(length);
|
||||||
|
|
||||||
var result = new ArraySegment<byte>(_buffer, _offset, length);
|
var result = new ArraySegment<byte>(_buffer, _offset, length);
|
||||||
_offset += length;
|
_offset += length;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ValidateReceiveBuffer(ushort length)
|
||||||
|
{
|
||||||
|
if (_buffer.Length < _offset + length)
|
||||||
|
{
|
||||||
|
throw new ArgumentOutOfRangeException(nameof(_buffer), $"expected at least {_offset + length} bytes but there are only {_buffer.Length} bytes");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public string ReadStringWithLengthPrefix()
|
public string ReadStringWithLengthPrefix()
|
||||||
{
|
{
|
||||||
var buffer = ReadWithLengthPrefix();
|
var buffer = ReadWithLengthPrefix();
|
||||||
|
|||||||
Reference in New Issue
Block a user