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); } }
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); } }
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); } }