void EventUpnp::SubscribeWriteRequest(const Uri& aPublisher, const Uri& aSubscriber, TUint aDurationSecs) { const Brn kRequestMethod("SUBSCRIBE"); const Brn kMethodCallback("CALLBACK"); const Brn kMethodNt("NT"); const Brn kFieldNt("upnp:event"); Sws<1024> writeBuffer(iSocket); WriterHttpRequest writerRequest(writeBuffer); writerRequest.WriteMethod(kRequestMethod, aPublisher.PathAndQuery(), Http::eHttp11); Http::WriteHeaderHostAndPort(writerRequest, aPublisher); IWriterAscii& writerField = writerRequest.WriteHeaderField(kMethodCallback); writerField.Write('<'); writerField.Write(aSubscriber.AbsoluteUri()); writerField.Write('>'); writerField.WriteNewline(); writerField = writerRequest.WriteHeaderField(kMethodNt); writerField.Write(kFieldNt); writerField.WriteNewline(); WriteHeaderTimeout(writerRequest, aDurationSecs); writerField.WriteNewline(); writerRequest.WriteFlush(); }
void CpiDeviceUpnp::GetControlUri(const Invocation& aInvocation, Uri& aUri) { AutoMutex a(iLock); if (iControlUrl.Bytes() != 0) { aUri.Replace(iControlUrl); } else { GetServiceUri(aUri, "controlURL", aInvocation.ServiceType()); iControlUrl.Set(aUri.AbsoluteUri()); } }