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(eventKey, GetMessageId(topic), _stringMinifier.Minify(eventKey))); _cursorTopics.Add(topic); return true; } return false; } }
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(); } }
private static 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 virtual void SetEventTopic(string key, Topic topic) { lock (EventKeys) { EventKeys.Add(key); } }