lib/upnp/Discovery: add method GetEventLoop()

This commit is contained in:
Max Kellermann
2017-08-25 10:59:49 +02:00
parent 309ed77ef4
commit 8aef518c05
2 changed files with 11 additions and 3 deletions

View File

@@ -45,7 +45,7 @@ UPnPDeviceDirectory::Downloader::Downloader(UPnPDeviceDirectory &_parent,
void void
UPnPDeviceDirectory::Downloader::Start() UPnPDeviceDirectory::Downloader::Start()
{ {
auto &event_loop = parent.curl->GetEventLoop(); auto &event_loop = parent.GetEventLoop();
BlockingCall(event_loop, [this](){ BlockingCall(event_loop, [this](){
request.Start(); request.Start();
@@ -187,7 +187,7 @@ UPnPDeviceDirectory::OnAlive(Upnp_Discovery *disco)
try { try {
downloader->Start(); downloader->Start();
} catch (...) { } catch (...) {
BlockingCall(curl->GetEventLoop(), [downloader](){ BlockingCall(GetEventLoop(), [downloader](){
downloader->Destroy(); downloader->Destroy();
}); });
@@ -267,11 +267,17 @@ UPnPDeviceDirectory::UPnPDeviceDirectory(EventLoop &event_loop,
UPnPDeviceDirectory::~UPnPDeviceDirectory() UPnPDeviceDirectory::~UPnPDeviceDirectory()
{ {
BlockingCall(curl->GetEventLoop(), [this](){ BlockingCall(GetEventLoop(), [this](){
downloaders.clear_and_dispose(DeleteDisposer()); downloaders.clear_and_dispose(DeleteDisposer());
}); });
} }
inline EventLoop &
UPnPDeviceDirectory::GetEventLoop()
{
return curl->GetEventLoop();
}
void void
UPnPDeviceDirectory::Start() UPnPDeviceDirectory::Start()
{ {

View File

@@ -143,6 +143,8 @@ public:
UPnPDeviceDirectory(const UPnPDeviceDirectory &) = delete; UPnPDeviceDirectory(const UPnPDeviceDirectory &) = delete;
UPnPDeviceDirectory& operator=(const UPnPDeviceDirectory &) = delete; UPnPDeviceDirectory& operator=(const UPnPDeviceDirectory &) = delete;
EventLoop &GetEventLoop();
void Start(); void Start();
/** Retrieve the directory services currently seen on the network */ /** Retrieve the directory services currently seen on the network */