protected override void DisposeObject(bool disposing) { if (disposing) { try { currentSubscription?.Dispose(); } catch (Exception ex) { log.LogWarning(ex, w => w .WriteProperty("action", "DisposeEventReceiver") .WriteProperty("state", "Failed")); } try { timer?.StopAsync().Wait(); } catch (Exception ex) { log.LogWarning(ex, w => w .WriteProperty("action", "DisposeEventReceiver") .WriteProperty("state", "Failed")); } } }
void HandleUnsubscription(IEventSubscription subscription) { lock (subscription) { foreach (var channel in subscription.Channels ?? EventSubscription.UnknownChannel) { UnRegisterSubscription(subscription, channel, ChannelSubcriptions); } UnRegisterSubscription(subscription, subscription.SubscriptionId, Subcriptions); UnRegisterSubscription(subscription, subscription.UserId, UserIdSubcriptions); UnRegisterSubscription(subscription, subscription.UserName, UserNameSubcriptions); UnRegisterSubscription(subscription, subscription.SessionId, SessionSubcriptions); if (OnUnsubscribe != null) { OnUnsubscribe(subscription); } subscription.Dispose(); } if (NotifyChannelOfSubscriptions && subscription.Channels != null && NotifyLeave != null) { NotifyLeave(subscription); } }
void HandleUnsubscription(IEventSubscription subscription) { lock (subscription) { UnRegisterSubscription(subscription, subscription.Channel ?? UnknownChannel, ChannelSubcriptions); UnRegisterSubscription(subscription, subscription.SubscriptionId, Subcriptions); UnRegisterSubscription(subscription, subscription.UserId, UserIdSubcriptions); UnRegisterSubscription(subscription, subscription.UserName, UserNameSubcriptions); UnRegisterSubscription(subscription, subscription.SessionId, SessionSubcriptions); if (OnUnsubscribe != null) { OnUnsubscribe(subscription); } subscription.Dispose(); } if (NotifyChannelOfSubscriptions && subscription.Channel != null) { NotifyChannel(subscription.Channel, "cmd.onLeave", subscription.Meta); } }