private void SubscribeConnect(IAsyncResult aAsync) { Trace.WriteLine(Trace.kUpnp, "Subscribe End Connect"); try { iRequest.EndConnect(aAsync); // The event URI might also be required to include the URI fragment Upnp.WriteMethodSubscribe(iWriter, iEventUri.PathAndQuery); Upnp.WriteHost(iWriter, iEventUri.Host + ":" + iEventUri.Port.ToString()); Upnp.WriteCallback(iWriter, Server.Uri); Upnp.WriteNotificationType(iWriter); Upnp.WriteTimeout(iWriter, kSubscriptionTimeout); iWriter.WriteFlush(); Trace.WriteLine(Trace.kUpnp, "Subscribe Begin Wait For Data"); iRequest.BeginWaitForData(SubscribeWaitForData); } catch (Exception ex) { HandleSubscriptionException("SubscribeConnect", ex); } }
private void RenewConnect(IAsyncResult aAsync) { try { iRequest.EndConnect(aAsync); iMutex.WaitOne(); string sid = iSubscriptionId; iMutex.ReleaseMutex(); if (sid != null) { Upnp.WriteMethodSubscribe(iWriter, iEventUri.AbsolutePath); Upnp.WriteHost(iWriter, iEventUri.Host + ":" + iEventUri.Port.ToString()); Upnp.WriteSid(iWriter, iSubscriptionId); Upnp.WriteTimeout(iWriter, kSubscriptionTimeout); iWriter.WriteFlush(); iRequest.BeginWaitForData(RenewWaitForData); } else { iRequest.Close(); iSubscribing = false; iPendingSubscribe = false; iUnsubscribing = false; iPendingUnsubscribe = false; iSubscriptionId = null; } } catch (Exception ex) { HandleSubscriptionException("RenewConnect", ex); } }