public MqttV500PropertiesReader(IMqttPacketBodyReader body)
        {
            _body = body ?? throw new ArgumentNullException(nameof(body));

            if (!body.EndOfStream)
            {
                _length = (int)body.ReadVariableLengthInteger();
            }

            _targetOffset = body.Offset + _length;
        }
        public void FillUserProperties(List <MqttUserProperty> userProperties)
        {
            if (userProperties == null)
            {
                throw new ArgumentNullException(nameof(userProperties));
            }

            var userPropertiesLength = _body.ReadVariableLengthInteger();

            if (userPropertiesLength == 0)
            {
                return;
            }

            var targetPosition = _body.Offset + userPropertiesLength;

            while (_body.Offset < targetPosition)
            {
                var name  = _body.ReadStringWithLengthPrefix();
                var value = _body.ReadStringWithLengthPrefix();

                userProperties.Add(new MqttUserProperty(name, value));
            }
        }
 public uint ReadSubscriptionIdentifier()
 {
     return(_body.ReadVariableLengthInteger());
 }