Merge tag 'v0.20.12'

release v0.20.12
This commit is contained in:
Max Kellermann
2017-11-25 19:46:07 +01:00
7 changed files with 103 additions and 20 deletions

View File

@@ -33,12 +33,13 @@
#include <string.h>
UPnPDeviceDirectory::Downloader::Downloader(UPnPDeviceDirectory &_parent,
const Upnp_Discovery &disco)
const UpnpDiscovery &disco)
:defer_start_event(_parent.GetEventLoop(),
BIND_THIS_METHOD(OnDeferredStart)),
parent(_parent),
id(disco.DeviceId), url(disco.Location),
expires(std::chrono::seconds(disco.Expires)),
id(UpnpDiscovery_get_DeviceID_cstr(&disco)),
url(UpnpDiscovery_get_Location_cstr(&disco)),
expires(std::chrono::seconds(UpnpDiscovery_get_Expires(&disco))),
request(*parent.curl, url.c_str(), *this)
{
parent.downloaders.push_back(*this);
@@ -170,10 +171,10 @@ UPnPDeviceDirectory::LockRemove(const std::string &id)
}
inline int
UPnPDeviceDirectory::OnAlive(Upnp_Discovery *disco) noexcept
UPnPDeviceDirectory::OnAlive(const UpnpDiscovery *disco) noexcept
{
if (isMSDevice(disco->DeviceType) ||
isCDService(disco->ServiceType)) {
if (isMSDevice(UpnpDiscovery_get_DeviceType_cstr(disco)) ||
isCDService(UpnpDiscovery_get_ServiceType_cstr(disco))) {
try {
auto *downloader = new Downloader(*this, *disco);
@@ -196,12 +197,12 @@ UPnPDeviceDirectory::OnAlive(Upnp_Discovery *disco) noexcept
}
inline int
UPnPDeviceDirectory::OnByeBye(Upnp_Discovery *disco) noexcept
UPnPDeviceDirectory::OnByeBye(const UpnpDiscovery *disco) noexcept
{
if (isMSDevice(disco->DeviceType) ||
isCDService(disco->ServiceType)) {
if (isMSDevice(UpnpDiscovery_get_DeviceType_cstr(disco)) ||
isCDService(UpnpDiscovery_get_ServiceType_cstr(disco))) {
// Device signals it is going off.
LockRemove(disco->DeviceId);
LockRemove(UpnpDiscovery_get_DeviceID_cstr(disco));
}
return UPNP_E_SUCCESS;
@@ -212,19 +213,19 @@ UPnPDeviceDirectory::OnByeBye(Upnp_Discovery *disco) noexcept
// Example: ContentDirectories appearing and disappearing from the network
// We queue a task for our worker thread(s)
int
UPnPDeviceDirectory::Invoke(Upnp_EventType et, void *evp) noexcept
UPnPDeviceDirectory::Invoke(Upnp_EventType et, const void *evp) noexcept
{
switch (et) {
case UPNP_DISCOVERY_SEARCH_RESULT:
case UPNP_DISCOVERY_ADVERTISEMENT_ALIVE:
{
Upnp_Discovery *disco = (Upnp_Discovery *)evp;
auto *disco = (const UpnpDiscovery *)evp;
return OnAlive(disco);
}
case UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE:
{
Upnp_Discovery *disco = (Upnp_Discovery *)evp;
auto *disco = (const UpnpDiscovery *)evp;
return OnByeBye(disco);
}