示例#1
0
        private void TryRemoveSubscriber(MessageListEntry <TMessage, TSubscriber> e)
        {
            if (!e.Empty())
            {
                return;
            }

            OnRemovingSubscriber(e);

            Subscribers.Remove(e.SubscriberId);

            OnDisposingSubscription(e);

            e.Dispose();
        }
示例#2
0
        private void Subscribe(TMessage message)
        {
            var e = Subscribers.Get(message.SubscriberId);

            if (e == null)
            {
                var subscriber = OnCreatingSubscriber(message.SubscriberId, message);
                Subscribers.Add(message.SubscriberId, e = new MessageListEntry <TMessage, TSubscriber>(subscriber, message.SubscriberId));
            }

            //only add if not an update

            if (!e.Process(message))
            {
                OnAddingToSubscriber(e, message);
            }
        }
示例#3
0
 protected abstract void OnDisposingSubscription(MessageListEntry <TMessage, TSubscriber> entry);
示例#4
0
 protected abstract void OnRemovingSubscriber(MessageListEntry <TMessage, TSubscriber> entry);
示例#5
0
 protected abstract void OnRemovingFromSubscriber(MessageListEntry <TMessage, TSubscriber> entry, TMessage message);
示例#6
0
 protected abstract void OnAddingToSubscriber(MessageListEntry <TMessage, TSubscriber> entry, TMessage message);