Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
 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());
     }
 }
Exemplo n.º 4
0
 /// <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;
 }
Exemplo n.º 5
0
 public Reply(MessageNumber conversationId = null)
 {
     ConvId = conversationId ?? MessageNumber.Create();
     MsgId  = MessageNumber.Create();
 }
Exemplo n.º 6
0
 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
        }