internal void UnsubscribeEvents(EventSubscription subscription) { lock (_cpData.SyncObj) { HttpWebRequest request = CreateEventUnsubscribeRequest(subscription); ChangeEventSubscriptionState state = new ChangeEventSubscriptionState(subscription.ServiceDescriptor, subscription.Service, request); _pendingCalls.Add(state); IAsyncResult result = state.Request.BeginGetResponse(OnUnsubscribeResponseReceived, state); NetworkHelper.AddTimeout(request, result, EVENT_UNSUBSCRIPTION_CALL_TIMEOUT * 1000); } }
protected HttpWebRequest CreateEventUnsubscribeRequest(EventSubscription subscription) { ServiceDescriptor sd = subscription.ServiceDescriptor; LinkData preferredLink = sd.RootDescriptor.SSDPRootEntry.PreferredLink; HttpWebRequest request = (HttpWebRequest) WebRequest.Create(new Uri( new Uri(preferredLink.DescriptionLocation), sd.EventSubURL)); NetworkUtils.SetLocalEndpoint(request, preferredLink.Endpoint.EndPointIPAddress); request.Method = "UNSUBSCRIBE"; request.Headers.Add("SID", subscription.Sid); return request; }
protected void RenewEventSubscription(EventSubscription subscription) { if (!subscription.Service.IsConnected) throw new IllegalCallException("Service '{0}' is not connected to a UPnP network service", subscription.Service.FullQualifiedName); lock (_cpData.SyncObj) { HttpWebRequest request = CreateRenewEventSubscribeRequest(subscription); ChangeEventSubscriptionState state = new ChangeEventSubscriptionState(subscription.ServiceDescriptor, subscription.Service, request); _pendingCalls.Add(state); IAsyncResult result = state.Request.BeginGetResponse(OnSubscribeOrRenewSubscriptionResponseReceived, state); NetworkHelper.AddTimeout(request, result, EVENT_SUBSCRIPTION_CALL_TIMEOUT * 1000); } }