Esempio n. 1
0
        private void AddSubscription(string queue, EvHandler handler)
        {
            if (!subscriptions.TryGetValue(queue, out List <EvHandler> handlers))
            {
                handlers             = new List <EvHandler>();
                subscriptions[queue] = handlers;
            }

            handlers.Add(handler);
        }
Esempio n. 2
0
        //--------------------------------------------------------------------------------------------------------------------------------------
        #endregion


        #region Functions

        #region Private Functions
        //--------------------------------------------------------------------------------------------------------------------------------------
        static void __exec <T>(object sender, T ev, EvInfo evInfo, EvHandler evhandle)
        {
            //use Dynamic callback if derived type; use known type otherwise
            if (evInfo.IsDerivedMatch)
            {
                ((dynamic)evhandle.Cb)(sender, evInfo, ev);
            }
            else
            {
                ((EventCb <T>)evhandle.Cb)(sender, evInfo, ev);
            }
        }
Esempio n. 3
0
 public void Unsubscribe(string ev, EvHandler handler)
 {
     lock (lockObj)
     {
         var q = queue.GetQueue(ev);
         if (RemoveSubscription(ev, handler) == 0)
         {
             q.DetachReceiver();
             q.EventReceivedHandler = null;
         }
     }
 }
Esempio n. 4
0
 public void Subscribe(string queueName, EvHandler handler)
 {
     lock (lockObj)
     {
         var q = queue.GetQueue(queueName);
         if (GetSubCountForQueue(queueName) == 0)
         {
             q.AttachReceiver();
             q.EventReceivedHandler = Queue_EventReceived;
         }
         AddSubscription(queueName, handler);
     }
 }
Esempio n. 5
0
 /// <summary>
 /// removes handler from queue and returns count of remaining handlers for said queue
 /// </summary>
 /// <param name="queue"></param>
 /// <param name="handler"></param>
 /// <returns></returns>
 private int RemoveSubscription(string queue, EvHandler handler)
 {
     if (subscriptions.TryGetValue(queue, out List <EvHandler> handlers))
     {
         handlers.Remove(handler);
         if (handlers.Count == 0)
         {
             subscriptions.Remove(queue);
         }
         return(handlers.Count);
     }
     return(0);
 }