/// <summary> /// Factor method to create a message from a byte list /// </summary> /// <param name="bytes"></param> /// <returns>A new message of the right specialization</returns> public static Message Create(ByteList bytes) { Message result = null; if (bytes == null || bytes.RemainingToRead < MinimumEncodingLength) { throw new ApplicationException("Invalid message byte array"); } Int16 msgType = bytes.PeekInt16(); if (msgType > (Int16)MESSAGE_CLASS_IDS.Request && msgType <= (Int16)MESSAGE_CLASS_IDS.Reply) { result = Request.Create(bytes); } else if (msgType > (Int16)MESSAGE_CLASS_IDS.Reply && msgType < (Int16)MESSAGE_CLASS_IDS.MaxMessageClassId) { result = Reply.Create(bytes); } else { throw new ApplicationException("Invalid Message Type"); } 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> 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> new public static ResourceReply Create(ByteList messageBytes) { ResourceReply 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 ResourceReply(); result.Decode(messageBytes); } return(result); }
/// <summary> /// Factor method to create a message from a byte list /// </summary> /// <param name="bytes">A byte list from which the message will be decoded</param> /// <returns>A new message of the right specialization</returns> new public static EndUpdateStream Create(ByteList bytes) { EndUpdateStream result = null; if (bytes == null || bytes.RemainingToRead < MinimumEncodingLength) { throw new ApplicationException("Invalid message byte array"); } else if (bytes.PeekInt16() != ClassId) { throw new ApplicationException("Invalid message class id"); } else { result = new EndUpdateStream(); result.Decode(bytes); } return(result); }
/// <summary> /// Factor method to create a message from a byte list /// </summary> /// <param name="bytes"></param> /// <returns>A new message of the right specialization</returns> new public static Request Create(ByteList bytes) { Request result = null; if (bytes == null || bytes.RemainingToRead < MinimumEncodingLength) { throw new ApplicationException("Invalid message byte array"); } Int16 msgType = bytes.PeekInt16(); switch (msgType) { case (Int16)MESSAGE_CLASS_IDS.JoinGame: result = JoinGame.Create(bytes); break; case (Int16)MESSAGE_CLASS_IDS.AddComponent: result = AddComponent.Create(bytes); break; case (Int16)MESSAGE_CLASS_IDS.RemoveComponent: result = RemoveComponent.Create(bytes); break; case (Int16)MESSAGE_CLASS_IDS.StartGame: result = StartGame.Create(bytes); break; case (Int16)MESSAGE_CLASS_IDS.EndGame: result = EndGame.Create(bytes); break; case (Int16)MESSAGE_CLASS_IDS.GetResource: result = GetResource.Create(bytes); break; case (Int16)MESSAGE_CLASS_IDS.TickDelivery: result = TickDelivery.Create(bytes); break; case (Int16)MESSAGE_CLASS_IDS.ValidateTick: result = ValidateTick.Create(bytes); break; case (Int16)MESSAGE_CLASS_IDS.Move: result = Move.Create(bytes); break; case (Int16)MESSAGE_CLASS_IDS.ThrowBomb: result = ThrowBomb.Create(bytes); break; case (Int16)MESSAGE_CLASS_IDS.Eat: result = Eat.Create(bytes); break; case (Int16)MESSAGE_CLASS_IDS.ChangeStrength: result = ChangeStrength.Create(bytes); break; case (Int16)MESSAGE_CLASS_IDS.Collaborate: result = Collaborate.Create(bytes); break; case (Int16)MESSAGE_CLASS_IDS.GetStatus: result = GetStatus.Create(bytes); break; case (Int16)MESSAGE_CLASS_IDS.ExitGame: result = ExitGame.Create(bytes); break; case (Int16)MESSAGE_CLASS_IDS.StartUpdateStream: result = StartUpdateStream.Create(bytes); break; default: throw new ApplicationException("Invalid Message Class Id"); } return(result); }