public override bool Subscribe(string channel, SubscribableListener del)
 {
     bool retval = base.Subscribe(channel, del);
     if (retval)
         subscribed_delegates.Add(new Tuple<string, SubscribableListener>(channel, del));
     return retval;
 }
Exemple #2
0
        public static ILogger GetLogger()
        {
            lock (_lockObj)
            {
                if (_logger != null)
                {
                    return(_logger);
                }

                var listener = new SubscribableListener();
                listener.MessageLogged += Listener_MessageLogged;
                _logger = listener;

                return(_logger);
            }
        }
 public override void PatternUnsubscribe(string channel_pattern, SubscribableListener del)
 {
     base.PatternUnsubscribe(channel_pattern, del);
     int index = -1;
     for (int i = 0; i < subscribed_delegates.Count; i++)
     {
         if (subscribed_delegates[i].Item1 == channel_pattern && subscribed_delegates[i].Item2 == del)
         {
             index = i;
             break;
         }
     }
     if (index > -1)
     {
         subscribed_delegates.RemoveAt(index);
     }
 }
 public override bool Unsubscribe(string channel, SubscribableListener del)
 {
     bool retval = base.Unsubscribe(channel, del);
     if (retval)
     {
         int index = -1;
         for (int i = 0; i < subscribed_delegates.Count; i++)
         {
             if (subscribed_delegates[i].Item1 == channel && subscribed_delegates[i].Item2 == del)
             {
                 index = i;
                 break;
             }
         }
         if (index > -1)
         {
             subscribed_delegates.RemoveAt(index);
         }
     }
     return retval;
 }
 public override void PatternSubscribe(string channel_pattern, SubscribableListener del)
 {
     base.PatternSubscribe(channel_pattern, del);
     pattern_subscribed_delegates.Add(new Tuple<string, SubscribableListener>(channel_pattern, del));
 }
 public virtual void PatternUnsubscribe(string channel_pattern, SubscribableListener del)
 {
     if (_subscribable != null)
         _subscribable.PatternSubscribe(channel_pattern, del);
 }
 public virtual bool Unsubscribe(string channel, SubscribableListener del)
 {
     if (_subscribable != null)
         return _subscribable.Unsubscribe(channel, del);
     return false;
 }
 public bool Unsubscribe(string channel, SubscribableListener del)
 {
     return SubscribableManager.Unsubscribe(channel, del);
 }
 public void PatternUnsubscribe(string channel_pattern, SubscribableListener del)
 {
     SubscribableManager.PatternUnsubscribe(channel_pattern, del);
 }
Exemple #10
0
 public void PatternSubscribe(string channel_pattern, SubscribableListener del)
 {
     List<SubscribableListener> pattern_channel = pattern_channels.GetValueOrDefault(channel_pattern, DefaultPatternValue);
     if (!pattern_channel.Contains(del))
     {
         pattern_channel.Add(del);
     }
     foreach(KeyValuePair<string, List<SubscribableListener>> channel in channels.GetAllMatchingRegex(channel_pattern))
     {
         if (!channel.Value.Contains(del))
         {
             channel.Value.Add(del);
         }
     }
 }
Exemple #11
0
 public bool Unsubscribe(string channel, SubscribableListener del)
 {
     List<SubscribableListener> subscribers = channels.GetValueOrDefault(channel, DefaultChannelValue);
     if (!subscribers.Contains(del))
     {
         return false;
     }
     subscribers.Remove(del);
     return true;
 }
Exemple #12
0
 public void PatternUnsubscribe(string channel_pattern, SubscribableListener del)
 {
     List<SubscribableListener> pattern_channel = pattern_channels.GetValueOrDefault(channel_pattern, DefaultPatternValue);
     if (pattern_channel.Contains(del))
     {
         pattern_channel.Remove(del);
     }
     IEnumerable<KeyValuePair<string, List<SubscribableListener>>> matching_channels =
         channels.GetAllMatchingRegex(channel_pattern);
     List<string> channels_to_remove = new List<string>();
     foreach (KeyValuePair<string, List<SubscribableListener>> channel in matching_channels)
     {
         if (channel.Value.Contains(del))
         {
             channel.Value.Remove(del);
         }
         if (channel.Value.Count == 0)
         {
             channels_to_remove.Add(channel.Key);
         }
     }
 }