public async Task Unsubscribe(string channel) { if (channel.Contains("*")) { var error = string.Format(WILDCARD_CHANNEL_ERROR_FORMAT, channel); throw new SubscriptionException(error); } if (!_subscribedChannels.ContainsKey(channel)) { var error = string.Format(NOT_SUBSCRIBED, channel); throw new SubscriptionException(error); } _logger.Debug("Unsubscribing from channel '{0}'", channel); var message = new UnsubscribeRequestMessage(clientId: ClientId, subscriptionChannel: channel, id: MessageCounter++); var result = await ExecuteSynchronousMessage <UnsubscribeResponseMessage>(message : message); if (!result.Successful) { throw new SubscriptionException(result.Error); } _subscribedChannels.Remove(channel); }
public static void Unsubscribe(SubscriptionManager manager) { var request = new UnsubscribeRequestMessage(manager.Identifier); // Perform the default unsubscribe request from the service var channel = ChannelFactory <ISubscriptionManager> .CreateChannel(new BasicHttpBinding(), manager.EndpointAddress.ToEndpointAddress()); channel.Unsubscribe(request); Console.WriteLine("Event unsubscribed!"); }
/// <summary> /// Operation to unsubscribe an event sink for an existing subscription. /// </summary> /// <param name="request">The <see cref="UnsubscribeRequestMessage">request message</see> containing the unsubscription request details.</param> public void Unsubscribe(UnsubscribeRequestMessage request) { Guid id; request.Identifier.Value.TryGetGuid(out id); var exists = Subscribers.ContainsKey(id); if (exists) { Subscribers.Remove(id); } }