Ejemplo n.º 1
0
 public void Consume(Guid id, ConsumeEventHandler eventConsume = null)
 {
     if (eventConsume != null)
     {
         if (messageNotifyEvent != null)
         {
             if (!messageNotifyEvent[id].GetInvocationList().Contains(eventConsume))
             {
                 messageNotifyEvent[id] += eventConsume;
             }
         }
         else
         {
             this.messageNotifyEvent[id] += eventConsume;
         }
     }
     if (this.ContainsKey(id))
     {
         BaseMessage msg = this[id];
         if (messageNotifyEvent != null)
         {
             messageNotifyEvent[id](msg);
         }
     }
 }
Ejemplo n.º 2
0
 public TaskQueue(int workerCount, ConsumeEventHandler <T> OnConsume)
 {
     this.OnConsume = OnConsume;
     workers        = new Thread[workerCount];
     // Create and start a separate thread for each worker
     for (int i = 0; i < workerCount; i++)
     {
         workers[i]      = new Thread(Consume);
         workers[i].Name = string.Format("Worker{0}", i);
         workers[i].Start();
     }
 }
Ejemplo n.º 3
0
 public void CancelSubscriMessage(string clientId, ConsumeEventHandler eventConsume)
 {
     if (eventConsume != null)
     {
         if (this.messagesNotifyEvent != null)
         {
             if (this.messagesNotifyEvent[clientId].GetInvocationList().Contains(eventConsume))
             {
                 this.messagesNotifyEvent[clientId] -= eventConsume;
             }
         }
     }
 }
Ejemplo n.º 4
0
 public void SubscrMessage(string clientId, ConsumeEventHandler eventConsume)
 {
     if (eventConsume != null)
     {
         if (this.messagesNotifyEvent != null)
         {
             if (!this.messagesNotifyEvent[clientId].GetInvocationList().Contains(eventConsume))
             {
                 this.messagesNotifyEvent[clientId] += eventConsume;
             }
         }
         else
         {
             this.messagesNotifyEvent.Add(clientId, eventConsume);
         }
     }
 }
Ejemplo n.º 5
0
        public void should_publish_data_when_added()
        {
            const int writeCount = 999;
            var consumedValue = 0L;
            var mre = new ManualResetEvent(false);
            var consumeHandler = new ConsumeEventHandler(writeCount, mre);
            _doubleBuffer = new BufferController<Event<long>>(1000, evnt =>
                {
                    consumedValue = evnt.Value;
                    consumeHandler.OnNext(evnt);
                });

            new Thread(() => _doubleBuffer.Start()).Start();

            for (int data = 0; data <= writeCount; data++)
            {
                _doubleBuffer.Add(new Event<long>(data));
            }

            mre.WaitOne();
            Assert.AreEqual(writeCount, consumeHandler.CurrentValue);
        }