/// <summary> /// The constructor /// </summary> /// <param name="mType">The message type</param> /// <param name="mCode">The message code</param> /// <param name="id">The message Id</param> public CoAPRequest(byte mType, byte mCode, UInt16 id) { if (mType != CoAPMessageType.CON && mType != CoAPMessageType.NON) { throw new ArgumentException("A request message must be of type CON or NON"); } if (!CoAPMessageCode.DoesMessageCodeRepresentARequest(mCode)) { throw new ArgumentException("The message code is not allowed for a request message"); } this.Version = new CoAPVersion(); this.MessageType = new CoAPMessageType(); this.MessageType.Value = mType; this.Code = new CoAPMessageCode(); if (!this.Code.IsValid(mCode)) { throw new ArgumentException("Invalid message code in request"); } this.Code.Value = mCode; this.ID = new CoAPMessageID(id); this.Options = new CoAPHeaderOptions(); }
/// <summary> /// The constructor /// </summary> /// <param name="mType">The message type</param> /// <param name="mCode">The message code</param> /// <param name="coapReq">The CoAPRequest against which this response is being constructed</param> public CoAPResponse(byte mType, byte mCode, CoAPRequest coapReq) { if (mType == CoAPMessageType.CON) { throw new ArgumentException("A response message must be of type ACK or RST or NON"); } if (!CoAPMessageCode.DoesMessageCodeRepresentAResponse(mCode)) { throw new ArgumentException("The message code can only be used for a request"); } this.Version = new CoAPVersion(); this.MessageType = new CoAPMessageType(); this.MessageType.Value = mType; this.Code = new CoAPMessageCode(); if (!this.Code.IsValid(mCode)) { throw new ArgumentException("Response code invalid"); } this.Code.Value = mCode; this.ID = new CoAPMessageID(coapReq.ID.Value); this.Token = new CoAPToken(coapReq.Token.Value); //TOCHECK::this.Options = new CoAPHeaderOptions(coapReq.Options); this.Options = new CoAPHeaderOptions(); //Other needed parameters this.RemoteSender = coapReq.RemoteSender; }
/// <summary> /// The constructor /// </summary> /// <param name="mType">The message type</param> /// <param name="mCode">The message code</param> /// <param name="id">The message Id</param> public CoAPResponse(byte mType, byte mCode, UInt16 id) { if (mType == CoAPMessageType.CON) { throw new ArgumentException("A response message must be of type ACK or RST or NON"); } if (!CoAPMessageCode.DoesMessageCodeRepresentAResponse(mCode)) { throw new ArgumentException("The message code can only be used for a request"); } this.Version = new CoAPVersion(); this.MessageType = new CoAPMessageType(); this.MessageType.Value = mType; this.Code = new CoAPMessageCode(); if (!this.Code.IsValid(mCode)) { throw new ArgumentException("Invalid message code in request"); } this.Code.Value = mCode; this.ID = new CoAPMessageID(id); this.Options = new CoAPHeaderOptions(); }
/// <summary> /// Try to check if the message code represents a request code /// </summary> /// <param name="data">The data stream to parse</param> /// <returns>true if message code found and represents a request</returns> public static bool PeekIfMessageCodeIsRequestCode(byte[] data) { if (data == null || data.Length < AbstractCoAPMessage.HEADER_LENGTH) { throw new ArgumentNullException("Invalid byte stream to parse"); } byte mCode = data[1]; CoAPMessageCode msgCode = new CoAPMessageCode(); return(msgCode.IsValid(data[1]) && CoAPMessageCode.DoesMessageCodeRepresentARequest(data[1])); }