lib/upnp/Discovery: use DeferredMonitor instead of BlockingCall()

This commit is contained in:
Max Kellermann
2017-08-25 11:01:30 +02:00
parent 8aef518c05
commit e5ee357903
2 changed files with 16 additions and 14 deletions

View File

@@ -22,7 +22,6 @@
#include "ContentDirectoryService.hxx"
#include "Log.hxx"
#include "lib/curl/Global.hxx"
#include "event/Call.hxx"
#include "util/DeleteDisposer.hxx"
#include "util/ScopeExit.hxx"
#include "util/RuntimeError.hxx"
@@ -34,7 +33,7 @@
UPnPDeviceDirectory::Downloader::Downloader(UPnPDeviceDirectory &_parent,
const Upnp_Discovery &disco)
:parent(_parent),
:DeferredMonitor(_parent.GetEventLoop()), parent(_parent),
id(disco.DeviceId), url(disco.Location),
expires(std::chrono::seconds(disco.Expires)),
request(*parent.curl, url.c_str(), *this)
@@ -42,16 +41,6 @@ UPnPDeviceDirectory::Downloader::Downloader(UPnPDeviceDirectory &_parent,
parent.downloaders.push_back(*this);
}
void
UPnPDeviceDirectory::Downloader::Start()
{
auto &event_loop = parent.GetEventLoop();
BlockingCall(event_loop, [this](){
request.Start();
});
}
void
UPnPDeviceDirectory::Downloader::Destroy()
{
@@ -59,6 +48,12 @@ UPnPDeviceDirectory::Downloader::Destroy()
DeleteDisposer());
}
void
UPnPDeviceDirectory::Downloader::RunDeferred()
{
request.Start();
}
void
UPnPDeviceDirectory::Downloader::OnHeaders(unsigned status,
std::multimap<std::string, std::string> &&)