private static int? ReadLength(ReadBuffer readBuffer)
{
var position = readBuffer.Position;
readBuffer.Fill(1);
var leadingOctet = readBuffer[readBuffer.Index++];
if ((leadingOctet & 0x80) > 0)
{
var length = leadingOctet & 0x7F;
if (length == 0)
{
return null;
}
readBuffer.Fill(length);
var result = Read8Bit(readBuffer, length, false);
if (result > int.MaxValue)
{
throw CreateEmberException("The length at position {0} exceeds the expected range.", position);
}
return (int)result;
}
else
{
return leadingOctet;
}
}