Esempio n. 1
0
        public T CreateFromMessage <T>(byte[] bytes, IPEndPoint refEp,
                                       Conversation.ActionHandler preAction, Conversation.ActionHandler postAction,
                                       Conversation.ActionHandler failAction) where T : Conversation, new()
        {
            bool              initiator = false;
            MessageId         ConvId    = Message.Decode <Message>(bytes).ConvId;
            ConversationQueue queue     = ConversationDictionary.Instance.CreateQueue(ConvId);

            queue.Enqueue(bytes);

            T conversation = new T()
            {
                InitiatorConv     = initiator,
                ConvId            = ConvId,
                Timeout           = DefaultTimeout,
                MaxRetries        = DefaultMaxRetries,
                Done              = false,
                EndIP             = refEp,
                MyQueue           = queue,
                PreExecuteAction  = preAction,
                PostExecuteAction = postAction,
                FailureAction     = failAction
            };


            return(conversation);
        }
        private void EnqueueMessage(byte[] bytes)
        {
            Message           msg   = Message.Decode <Message>(bytes);
            ConversationQueue queue = ConversationDictionary.Instance.Lookup(msg.ConvId);

            if (queue != null)
            {
                queue.Enqueue(bytes);
            }
        }
        public void EnqueueAndDequeue_1Envelope()
        {
            MessageId         msgId  = new MessageId();
            MessageId         convId = new MessageId();
            ConversationQueue q      = new ConversationQueue();
            ExitGame          msg1   = new ExitGame()
            {
                MsgId = msgId, ConvId = convId, PlayerID = 1, GameID = 1
            };

            q.Enqueue(msg1.Encode());
            byte[] result = q.Dequeue(1);
            Assert.AreEqual(msg1.Encode(), result);
        }