Пример #1
0
        /// <summary>
        /// Get the block 1 option
        /// </summary>
        /// <param name="blockNumber">Which block number you are requesting (1 or 2)</param>
        /// <returns>The block option</returns>
        public CoAPBlockOption GetBlockOption(UInt16 blockNumber)
        {
            if (blockNumber != CoAPHeaderOption.BLOCK1 && blockNumber != CoAPHeaderOption.BLOCK2)
            {
                throw new ArgumentException("Invalid block number. Must be either Block1 or Block2");
            }
            CoAPBlockOption blockOption = null;

            if (this.Options != null && this.Options.HasOption(blockNumber))
            {
                blockOption = new CoAPBlockOption(this.Options.GetOption(blockNumber).Value);
            }
            return(blockOption);
        }
Пример #2
0
        /// <summary>
        /// Set the block option
        /// </summary>
        /// <param name="blockNumber">Which block number you are requesting (1 or 2)</param>
        /// <param name="blockOption">The block option</param>
        public void SetBlockOption(UInt16 blockNumber, CoAPBlockOption blockOption)
        {
            if (blockNumber != CoAPHeaderOption.BLOCK1 && blockNumber != CoAPHeaderOption.BLOCK2)
            {
                throw new ArgumentException("Invalid block number. Must be either Block1 or Block2");
            }
            if (blockOption == null)
            {
                throw new ArgumentNullException("Block option cannot be NULL");
            }

            if (this.Options != null && this.Options.HasOption(blockNumber))
            {
                this.Options.RemoveOption(blockNumber);
            }
            this.AddOption(blockNumber, blockOption.ToStream(0));
        }
Пример #3
0
        /// <summary>
        /// Convert to a string representation
        /// </summary>
        /// <returns>string</returns>
        public override string ToString()
        {
            string optionValueAsString = (this.Value != null) ? AbstractByteUtils.ByteToStringUTF8(this.Value) : "";

            switch (this.Number)
            {
            case CoAPHeaderOption.ACCEPT:
                return("Accept : " + AbstractByteUtils.ToUInt16(this.Value).ToString());

            case CoAPHeaderOption.BLOCK1:
                CoAPBlockOption cbo1 = new CoAPBlockOption(this.Value);
                return("Block1 : " + cbo1.ToString());

            case CoAPHeaderOption.BLOCK2:
                CoAPBlockOption cbo2 = new CoAPBlockOption(this.Value);
                return("Block2 : " + cbo2.ToString());

            case CoAPHeaderOption.CONTENT_FORMAT:
                CoAPContentFormatOption ccformat = new CoAPContentFormatOption(AbstractByteUtils.ToUInt16(this.Value));
                return("Content-Format : " + ccformat.ToString());

            case CoAPHeaderOption.ETAG:
                return("ETag : " + optionValueAsString);

            case CoAPHeaderOption.IF_MATCH:
                return("If-Match : " + optionValueAsString);

            case CoAPHeaderOption.IF_NONE_MATCH:
                return("If-None-Match : ");

            case CoAPHeaderOption.OBSERVE:
                return("Observe : " + AbstractByteUtils.ToUInt64(this.Value).ToString());   //We have no data structure for 3-bytes

            case CoAPHeaderOption.LOCATION_PATH:
                return("Location-Path : " + optionValueAsString);

            case CoAPHeaderOption.LOCATION_QUERY:
                return("Location-Query : " + optionValueAsString);

            case CoAPHeaderOption.MAX_AGE:
                return("Max-Age : " + AbstractByteUtils.ToUInt64(this.Value).ToString());

            case CoAPHeaderOption.PROXY_SCHEME:
                return("Proxy-Scheme : " + optionValueAsString);

            case CoAPHeaderOption.PROXY_URI:
                return("Proxy-Uri : " + optionValueAsString);

            case CoAPHeaderOption.SIZE1:
                return("Size1 : " + AbstractByteUtils.ToUInt64(this.Value).ToString());

            case CoAPHeaderOption.SIZE2:
                return("Size2 : " + AbstractByteUtils.ToUInt64(this.Value).ToString());

            case CoAPHeaderOption.URI_HOST:
                return("Uri-Host : " + optionValueAsString);

            case CoAPHeaderOption.URI_PATH:
                return("Uri-Path : " + optionValueAsString);

            case CoAPHeaderOption.URI_PORT:
                return("Uri-Port : " + AbstractByteUtils.ToUInt16(this.Value));

            case CoAPHeaderOption.URI_QUERY:
                return("Uri-Query : " + optionValueAsString);

            default:
                return("Unknown : " + optionValueAsString);
            }
        }