public Conversation(string name, NetworkClient communicator, MessageNumber convId = null) : base(name) { Id = convId ?? MessageNumber.Create(); Properties = SharedProperties.Instance; Communicator = communicator; Communicator.OnMessageReceived += new NetworkClient.MessageReceived(ReceiveDirectMessage); MessageInbox = new ConcurrentQueue <Envelope>(); SentMessages = new ConcurrentQueue <Envelope>(); ReceivedMessages = new ConcurrentDictionary <Message, IPEndPoint>(); CallbacksRegistered = false; AllowInboundMessages = true; WaitingForReply = true; }
public Conversation(string name, MessageNumber convId = null) : base(name) { Id = convId ?? MessageNumber.Create(); Properties = SharedProperties.Instance; Communicator = ConversationManager.PrimaryCommunicator; MessageInbox = new ConcurrentQueue <Envelope>(); SentMessages = new ConcurrentQueue <Envelope>(); ReceivedMessages = new ConcurrentDictionary <Message, IPEndPoint>(); CallbacksRegistered = false; AllowInboundMessages = true; WaitingForReply = true; RegisterWithConversationManager(); }
protected override void ProcessResponse(Envelope envelope) { if (envelope.Message.GetType() == typeof(AliveRequest)) { AliveReply message = new AliveReply(); message.ConvId = Id; message.MsgId = MessageNumber.Create(); message.Success = true; message.Note = "Ah, ha, ha, ha, stayin' alive, stayin' alive"; Envelope toSend = new Envelope(envelope.Address, message); WaitingForReply = false; SendMessage(toSend); } else { Logger.Info("Received unexpected message: " + envelope.Message.ToString()); } }
/// <summary> /// Default Constructed called by the Request and Reply constructors used by the Senders. /// Note how this construct creates a new message number and set the conversation Id to /// the message number. This is the expected behavior for an initial messsage in a conversation. /// </summary> protected Message() { MessageNr = MessageNumber.Create(); ConversationId = MessageNr; }
public Reply(MessageNumber conversationId = null) { ConvId = conversationId ?? MessageNumber.Create(); MsgId = MessageNumber.Create(); }
public Request() { MsgId = MessageNumber.Create(); ConvId = MessageNumber.Create(); }
public void CreateEncodingSamples() { StreamWriter writer = new StreamWriter("MessageSamples.txt"); MessageNumber msgNumber = MessageNumber.Create(100, 120); MessageNumber conversationNumber = MessageNumber.Create(200, 240); AgentInfo agentInfo = new AgentInfo(10, AgentInfo.PossibleAgentType.BrilliantStudent, new Common.EndPoint("129.123.5.10:1234")) { AgentStatus = AgentInfo.PossibleAgentStatus.InGame, ANumber = "A00001", FirstName = "Joe", LastName = "Jones", Location = new FieldLocation(10, 20), Points = 100, Strength = 200, Speed = 1.2 }; AckNak ackNak = new AckNak(Reply.PossibleStatus.Success, agentInfo, "Test Message") { MessageNr = msgNumber, ConversationId = conversationNumber, IntResult = 99, Note = "Test Note" }; writer.WriteLine("AckNak"); writer.WriteLine("\tMessageNr={0}", ackNak.MessageNr.ToString()); writer.WriteLine("\tConversationId={0}", ackNak.ConversationId.ToString()); writer.WriteLine("\tReplyType={0}", ackNak.ReplyType); writer.WriteLine("\tAckNak Status={0}", ackNak.Status); writer.WriteLine("\tAgent Info:"); writer.WriteLine("\t\tId={0}", agentInfo.Id); writer.WriteLine("\t\tAgentStatus={0}", agentInfo.AgentStatus); writer.WriteLine("\t\tANumber={0}", agentInfo.ANumber); writer.WriteLine("\t\tFirstName={0}", agentInfo.FirstName); writer.WriteLine("\t\tLastName={0}", agentInfo.LastName); writer.WriteLine("\t\tLocation={0}", agentInfo.Location.ToString()); writer.WriteLine("\t\tPoints={0}", agentInfo.Points); writer.WriteLine("\t\tStrength={0}", agentInfo.Strength); writer.WriteLine("\t\tSpeed={0}", agentInfo.Speed); ByteList byteList = new ByteList(); ackNak.Encode(byteList); writer.WriteLine(""); writer.WriteLine("Encoding:"); writer.WriteLine(byteList.CreateLogString()); writer.WriteLine(""); writer.WriteLine("------------------------------------"); writer.WriteLine(""); JoinGame joinGame = new JoinGame(20, agentInfo) { MessageNr = msgNumber, ConversationId = conversationNumber, }; writer.WriteLine("JoinGame"); writer.WriteLine("\tMessageNr={0}", joinGame.MessageNr.ToString()); writer.WriteLine("\tConversationId={0}", joinGame.ConversationId.ToString()); writer.WriteLine("\tGameId={0}", joinGame.GameId); writer.WriteLine("\tAgent Info:"); writer.WriteLine("\t\tId={0}", agentInfo.Id); writer.WriteLine("\t\tAgentStatus={0}", agentInfo.AgentStatus); writer.WriteLine("\t\tANumber={0}", agentInfo.ANumber); writer.WriteLine("\t\tFirstName={0}", agentInfo.FirstName); writer.WriteLine("\t\tLastName={0}", agentInfo.LastName); writer.WriteLine("\t\tLocation={0}", agentInfo.Location.ToString()); writer.WriteLine("\t\tPoints={0}", agentInfo.Points); writer.WriteLine("\t\tStrength={0}", agentInfo.Strength); writer.WriteLine("\t\tSpeed={0}", agentInfo.Speed); byteList = new ByteList(); joinGame.Encode(byteList); writer.WriteLine(""); writer.WriteLine("Encoding:"); writer.WriteLine(byteList.CreateLogString()); writer.WriteLine(""); writer.WriteLine("------------------------------------"); writer.WriteLine(""); // TODO: All of the other message types }