Beispiel #1
0
 public virtual bool AddEvent(string key, Topic topic)
 {
     lock (EventKeys)
     {
         return EventKeys.Add(key);
     }
 }
        public override bool AddEvent(string eventKey, Topic topic)
        {
            lock (_lockObj)
            {
                // O(n), but small n and it's not common
                var index = _cursors.FindIndex(c => c.Key == eventKey);
                if (index == -1)
                {
                    _cursors.Add(new Cursor
                    {
                        Key = eventKey,
                        Id = GetMessageId(topic)
                    });

                    _cursorTopics.Add(topic);

                    return true;
                }

                return false;
            }
        }
 public override void SetEventTopic(string key, Topic topic)
 {
     // This isn't relevant to us as EventKeys is up to date
 }
 public override bool AddEvent(string key, Topic topic)
 {
     // This isn't relevant to us as EventKeys is up to date
     return false;
 }
Beispiel #5
0
 public void SetCursorTopic(string key, Topic topic)
 {
     lock (_lockObj)
     {
         // O(n), but small n and it's not common
         var index = _cursors.FindIndex(c => c.Key == key);
         if (index != -1)
         {
             _cursors[index].Topic = topic;
         }
     }
 }
Beispiel #6
0
 public void AddOrUpdateCursor(string key, ulong id, Topic topic)
 {
     lock (_lockObj)
     {
         // O(n), but small n and it's not common
         var index = _cursors.FindIndex(c => c.Key == key);
         if (index == -1)
         {
             _cursors.Add(new Cursor
             {
                 Key = key,
                 Id = id,
                 Topic = topic
             });
         }
     }
 }
        private ulong GetMessageId(Topic topic)
        {
            if (topic == null)
            {
                return 0;
            }

            return topic.Store.GetMessageCount();
        }
 public override void SetEventTopic(string eventKey, Topic topic)
 {
     lock (_lockObj)
     {
         // O(n), but small n and it's not common
         var index = _cursors.FindIndex(c => c.Key == eventKey);
         if (index != -1)
         {
             _cursorTopics[index] = topic;
         }
     }
 }
 public abstract bool AddEvent(string key, Topic topic);
Beispiel #10
0
 public abstract void SetEventTopic(string key, Topic topic);
Beispiel #11
0
        private void ScheduleTopic(Topic topic)
        {
            try
            {
                topic.SubscriptionLock.EnterReadLock();

                for (int i = 0; i < topic.Subscriptions.Count; i++)
                {
                    ISubscription subscription = topic.Subscriptions[i];
                    _broker.Schedule(subscription);
                }
            }
            finally
            {
                topic.SubscriptionLock.ExitReadLock();
            }
        }
Beispiel #12
0
 public virtual void SetEventTopic(string key, Topic topic)
 {
     lock (EventKeys)
     {
         EventKeys.Add(key);
     }
 }
Beispiel #13
0
 public virtual bool AddEvent(string key, Topic topic)
 {
     return false;
 }
Beispiel #14
0
 public virtual void SetEventTopic(string key, Topic topic)
 {
 }