/// <summary> /// Factor method to create a message from a byte list /// </summary> /// <param name="messageBytes">A byte list from which the message will be decoded</param> /// <returns>A new message of the right specialization</returns> new public static Reply Create(ByteList messageBytes) { Reply result = null; if (messageBytes == null || messageBytes.RemainingToRead < MinimumEncodingLength) { throw new ApplicationException("Invalid message byte array"); } Int16 msgType = messageBytes.PeekInt16(); switch (msgType) { case (Int16)MESSAGE_CLASS_IDS.AckNak: result = AckNak.Create(messageBytes); break; case (Int16)MESSAGE_CLASS_IDS.ReadyReply: result = ReadyReply.Create(messageBytes); break; case (Int16)MESSAGE_CLASS_IDS.ResourceReply: result = ResourceReply.Create(messageBytes); break; case (Int16)MESSAGE_CLASS_IDS.ConfigurationReply: result = ConfigurationReply.Create(messageBytes); break; case (Int16)MESSAGE_CLASS_IDS.PlayingFieldReply: result = PlayingFieldReply.Create(messageBytes); break; case (Int16)MESSAGE_CLASS_IDS.AgentListReply: result = AgentListReply.Create(messageBytes); break; case (Int16)MESSAGE_CLASS_IDS.StatusReply: result = StatusReply.Create(messageBytes); break; case (Int16)MESSAGE_CLASS_IDS.EndUpdateStream: result = EndUpdateStream.Create(messageBytes); break; default: throw new ApplicationException("Invalid Message Class Id"); } return(result); }
/// <summary> /// Factor method to create a message from a byte list /// </summary> /// <param name="messageBytes">A byte list from which the message will be decoded</param> /// <returns>A new message of the right specialization</returns> public static new ReadyReply Create(ByteList messageBytes) { ReadyReply result = null; if (messageBytes==null || messageBytes.RemainingToRead<MinimumEncodingLength) throw new ApplicationException("Invalid message byte array"); if (messageBytes.PeekInt16() != ClassId) throw new ApplicationException("Invalid message class id"); else { result = new ReadyReply(); result.Decode(messageBytes); } return result; }
public void ReadyReply_TestEverything() { ReadyReply r1 = new ReadyReply(Reply.PossibleStatus.Failure); Assert.AreEqual(Reply.PossibleStatus.Failure, r1.Status); r1 = new ReadyReply(Reply.PossibleStatus.Success, "test note"); Assert.AreEqual(Reply.PossibleStatus.Success, r1.Status); Assert.AreEqual("test note", r1.Note); ByteList byteList = new ByteList(); r1.Encode(byteList); Message msg = Message.Create(byteList); Assert.IsNotNull(msg); Assert.IsTrue(msg is ReadyReply); ReadyReply r2 = msg as ReadyReply; Assert.AreEqual(r1.Status, r2.Status); Assert.AreEqual(r1.Note, r2.Note); }
/// <summary> /// Factor method to create a message from a byte list /// </summary> /// <param name="messageBytes">A byte list from which the message will be decoded</param> /// <returns>A new message of the right specialization</returns> new public static ReadyReply Create(ByteList messageBytes) { ReadyReply result = null; if (messageBytes == null || messageBytes.RemainingToRead < MinimumEncodingLength) { throw new ApplicationException("Invalid message byte array"); } if (messageBytes.PeekInt16() != ClassId) { throw new ApplicationException("Invalid message class id"); } else { result = new ReadyReply(); result.Decode(messageBytes); } return(result); }