コード例 #1
0
        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);
        }
コード例 #2
0
        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!");
        }
コード例 #3
0
        /// <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);
            }
        }