internal ResponseTracking(MessageBase message, TimeSpan timeout) { _timeout = DateTime.Now.Add(timeout); _message = message; this.Key = new ResponseKey(message.AgentID, message.Sequence); }
internal ResponseTracking(MessageBase message) : this(message, CExcessiveWaitTimeout) { }
void Returned(IBasicProperties p, MessageBase m) { var dlg = OnReturned; if (dlg != null) { var args = new ReturnedMessageArgs { Queue = this.Queue, ReplyTo = p.ReplyTo, Message = m, Topic = this.Topic }; dlg(this, args); } }
internal int Ack(MessageBase response) { var ack = Interlocked.Increment(ref _ack); var responses = Util.NonBlockingLazyInitializeVolatile(ref _responses); lock (responses) { responses.Add(response); } RunCompletionLogic(); return ack; }
void DispatchMessage(IBasicProperties p, MessageBase m) { switch (m.Kind) { case AgentMessageKind.None: break; case AgentMessageKind.Mailing: Mailing(m as MailingMessage); break; case AgentMessageKind.MailingDelayed: DelayedMailing(m as DelayedMailingMessage); break; case AgentMessageKind.MailingPaused: PausedMailing(m as PausedMailingMessage); break; default: break; } }