예제 #1
0
        internal override int GetWriteLength()
        {
            int length = 0;
            var enc    = new MqttEncoding();

            length += enc.GetByteCount(ClientIdentifier);

            if (this.variableHeader.ConnectFlags.WillFlag)
            {
                length += enc.GetByteCount(WillTopic);
                length += enc.GetByteCount(WillMessage);
            }

            if (variableHeader.ConnectFlags.UsernameFlag)
            {
                length += enc.GetByteCount(Username);
            }

            if (variableHeader.ConnectFlags.PasswordFlag)
            {
                length += enc.GetByteCount(Password);
            }

            return(length);
        }
예제 #2
0
        /// <summary>
        ///     Gets the length of the payload in bytes when written to a stream.
        /// </summary>
        /// <returns>The length of the payload in bytes.</returns>
        internal override int GetWriteLength()
        {
            int length = 0;
            var enc    = new MqttEncoding();

            foreach (var topic in subscriptions)
            {
                length += enc.GetByteCount(topic);
            }

            return(length);
        }
예제 #3
0
        /// <summary>
        ///     Gets the length of the payload in bytes when written to a stream.
        /// </summary>
        /// <returns>The length of the payload in bytes.</returns>
        internal override int GetWriteLength()
        {
            int length = 0;
            var enc    = new MqttEncoding();

            foreach (var sub in subscriptions)
            {
                length += enc.GetByteCount(sub.Key);
                length += sizeof(MqttQos);
            }

            return(length);
        }
예제 #4
0
        /// <summary>
        /// Gets the length of the payload in bytes when written to a stream.
        /// </summary>
        /// <returns>The length of the payload in bytes.</returns>
        internal override int GetWriteLength()
        {
            int          length = 0;
            MqttEncoding enc    = new MqttEncoding();

            foreach (KeyValuePair <string, MqttQos> sub in subscriptions)
            {
                length += enc.GetByteCount(sub.Key);
                length += sizeof(MqttQos);
            }

            return(length);
        }
예제 #5
0
        /// <summary>
        ///     Gets the length of the write data when WriteTo will be called.
        /// </summary>
        /// <returns>The length of data witten by the call to GetWriteLength</returns>
        public virtual int GetWriteLength()
        {
            int headerLength = 0;
            var enc          = new MqttEncoding();

            if ((WriteFlags & ReadWriteFlags.ProtocolName) == ReadWriteFlags.ProtocolName)
            {
                headerLength += enc.GetByteCount(ProtocolName);
            }
            if ((WriteFlags & ReadWriteFlags.ProtocolVersion) == ReadWriteFlags.ProtocolVersion)
            {
                headerLength += sizeof(byte);
            }
            if ((WriteFlags & ReadWriteFlags.ConnectFlags) == ReadWriteFlags.ConnectFlags)
            {
                headerLength += MqttConnectFlags.GetWriteLength();
            }
            if ((WriteFlags & ReadWriteFlags.KeepAlive) == ReadWriteFlags.KeepAlive)
            {
                headerLength += sizeof(short);
            }
            if ((WriteFlags & ReadWriteFlags.ReturnCode) == ReadWriteFlags.ReturnCode)
            {
                headerLength += sizeof(byte);
            }
            if ((WriteFlags & ReadWriteFlags.TopicName) == ReadWriteFlags.TopicName)
            {
                headerLength += enc.GetByteCount(TopicName.ToString());
            }
            if ((WriteFlags & ReadWriteFlags.MessageIdentifier) == ReadWriteFlags.MessageIdentifier)
            {
                headerLength += sizeof(short);
            }

            return(headerLength);
        }