예제 #1
0
        private void FireBoundMethod(IListener listener, IMessage message)
        {
            if (listener.Callback != null)
            {
                listener.Callback(message);
            }

            listener.Counter++;
            if (listener.SubscriptionType == SubscriptionType.One)
            {
                this.Listeners.Remove(listener.Topic);
            }
            else if (listener.SubscriptionType == SubscriptionType.Many && listener.Counter == listener.Limit)
            {
                this.Listeners.Remove(listener.Topic);
            }
        }
예제 #2
0
 private void FireBoundMethod(IListener listener, IMessage message)
 {
     if (listener.Callback == null)
     {
         if (message.MessageType == MessageType.Text)
         {
             if (listener.IsStorageObject)
             {
                 var xs = this.XSocketClient.Serializer.DeserializeFromString<XStorage>(message.Data);
                 if (xs.Value == null)
                     listener.Execute(Activator.CreateInstance(listener.Type));
                 else
                     listener.Execute(this.XSocketClient.Serializer.DeserializeFromString(xs.Value.ToString(), listener.Type));
             }
             else
             {
                 listener.Execute(this.XSocketClient.Serializer.DeserializeFromString(message.Data, listener.Type));
             }
         }
         else
         {
             listener.Execute(message);
         }
     }
     else
     {
         listener.Callback(message);
     }
     listener.Counter++;
     if (listener.SubscriptionType == SubscriptionType.One)
         this.Listeners.Remove(listener.Topic);
     else if (listener.SubscriptionType == SubscriptionType.Many && listener.Counter == listener.Limit)
     {
         this.Listeners.Remove(listener.Topic);
     }
 }
예제 #3
0
 private void FireBoundMethod(IListener listener, IMessage message)
 {
     if (listener.Callback != null)
         listener.Callback(message);
     
     listener.Counter++;
     if (listener.SubscriptionType == SubscriptionType.One)
         this.Listeners.Remove(listener.Topic);
     else if (listener.SubscriptionType == SubscriptionType.Many && listener.Counter == listener.Limit)
     {
         this.Listeners.Remove(listener.Topic);
     }
 }