private void Initialize(IPriortyQueue <MessageInfo <TMessage> > messageQueue) { if (messageQueue != null) { schedule = new MessageSchedule <TMessage>(messageQueue, this); } }
public void Dispose() { if (thread != null) { IsRuning = false; Thread.Sleep(MillisecondsTimeout); thread = null; } if (MessageQueue != null) { MessageQueue.Clear(); MessageQueue = null; } }
public MessageSchedule(IPriortyQueue <MessageInfo <TMessage> > queue, IMessageRouter host) { if (!queue.IsSynchronized) { MessageQueue = PriorityQueue <MessageInfo <TMessage> > .Synchronized(queue); } else { MessageQueue = queue; } thread = new Thread(delegate() { IsRuning = true; MessageInfo <TMessage> item = null; while (true) { if (!IsRuning) { return; } while (MessageQueue.Count > 0) { //Thread.Sleep(MillisecondsTimeout); if ((item = MessageQueue.Pop()) != null) { host.Send(item.Sender, item.Message, true); } Thread.Sleep(MillisecondsTimeout); } } }); thread.IsBackground = true; thread.Name = "MessageManager.MessageQueue.Thread"; thread.Start(); }
public PriortyMessageRouter(IPriortyQueue <MessageInfo <TMessage> > messageQueue) { Initialize(messageQueue); }
public static IPriortyQueue <T> Synchronized(IPriortyQueue <T> innerQueue) { return(new SynPriorityQueue(innerQueue)); }
public SynPriorityQueue(IPriortyQueue <T> queue) { this.InnerQueue = queue; }