Ejemplo n.º 1
0
 private void RegisterObserver(string key, IEventItem observer)
 {
     if (m_observerMap.ContainsKey(key))
     {
         if (!m_observerMap[key].Contains(observer))
         {
             m_observerMap[key].Add(observer);
         }
     }
     else
     {
         m_observerMap.Add(key, new List <IEventItem>()
         {
             observer
         });
     }
 }
Ejemplo n.º 2
0
        protected long TryPolling(long currentServerSession, long currentEventSequence, out bool errorOccured)
        {
            errorOccured = true;
            IList <IEventItem> events = null;

            try
            {
                events       = EventService.PollEvents(currentServerSession, currentEventSequence, MaxWaitInterval);
                errorOccured = false;
            }
            catch (Exception e)
            {
                if (Log.ErrorEnabled)
                {
                    Log.Error(e);
                }
            }
            if (events == null || events.Count == 0)
            {
                return(currentEventSequence);
            }
            long timeBeforeDispatch = DateTimeUtil.CurrentTimeMillis();

            EventDispatcher.EnableEventQueue();
            try
            {
                for (int a = 0, size = events.Count; a < size; a++)
                {
                    IEventItem eventObject = events[a];
                    EventDispatcher.DispatchEvent(eventObject.EventObject, eventObject.DispatchTime, eventObject.SequenceNumber);
                    currentEventSequence = eventObject.SequenceNumber;
                }
            }
            finally
            {
                EventDispatcher.FlushEventQueue();
            }
            if (Log.InfoEnabled)
            {
                long timeAfterDispatch = DateTimeUtil.CurrentTimeMillis();
                Log.Info("Dispatching " + events.Count + " event(s) took " + (timeAfterDispatch - timeBeforeDispatch) + " ms.");
            }
            return(currentEventSequence);
        }