public static void AutoUnSubscribe() { string[] array = new string[Dispatcher.instance.domains.Count]; Dispatcher.instance.domains.Keys.CopyTo(array, 0); for (int i = 0; i < array.Length; i++) { Dispatcher.Domain domain = (Dispatcher.Domain)Dispatcher.instance.domains[array[i]]; string[] array2 = new string[domain.subscribers.Count]; domain.subscribers.Keys.CopyTo(array2, 0); for (int j = 0; j < array2.Length; j++) { List <Subscription> list = (List <Subscription>)domain.subscribers[array2[j]]; for (int k = 0; k < list.Count; k++) { Subscription subscription = list[k]; if (subscription.autoUnSubscribe) { domain.RemoveSubscription(subscription); } } } } }
public static void UnSubscribe(Subscription subscription) { if (subscription == null) { return; } if (Dispatcher.instance.domains == null || Dispatcher.instance.domains.Count == 0) { return; } if (Dispatcher.instance.domains.Contains(subscription.domain)) { Dispatcher.Domain domain = (Dispatcher.Domain)Dispatcher.instance.domains[subscription.domain]; if (domain == null || domain.subscribers == null || domain.subscribers.Count == 0) { return; } domain.RemoveSubscription(subscription); if (!Dispatcher.instance.domains.Contains(subscription.domain)) { Dispatcher.instance.domainNames.Remove(subscription.domain); } } }