/// <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); }
/// <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)); }
/// <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); } }