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); }