db/upnp: split cluCallback()

This commit is contained in:
Max Kellermann 2014-01-17 00:26:05 +01:00
parent 59510f509a
commit aa64a5328e
1 changed files with 29 additions and 15 deletions

View File

@ -156,6 +156,33 @@ discoExplorer(void *)
}
}
static int
OnAlive(Upnp_Discovery *disco)
{
if (isMSDevice(disco->DeviceType) ||
isCDService(disco->ServiceType)) {
DiscoveredTask *tp = new DiscoveredTask(1, disco);
if (discoveredQueue.put(tp))
return UPNP_E_FINISH;
}
return UPNP_E_SUCCESS;
}
static int
OnByeBye(Upnp_Discovery *disco)
{
if (isMSDevice(disco->DeviceType) ||
isCDService(disco->ServiceType)) {
DiscoveredTask *tp = new DiscoveredTask(0, disco);
if (discoveredQueue.put(tp))
return UPNP_E_FINISH;
}
return UPNP_E_SUCCESS;
}
// This gets called for all libupnp asynchronous events, in a libupnp
// thread context.
// Example: ContentDirectories appearing and disappearing from the network
@ -168,26 +195,13 @@ cluCallBack(Upnp_EventType et, void *evp)
case UPNP_DISCOVERY_ADVERTISEMENT_ALIVE:
{
Upnp_Discovery *disco = (Upnp_Discovery *)evp;
if (isMSDevice(disco->DeviceType) ||
isCDService(disco->ServiceType)) {
DiscoveredTask *tp = new DiscoveredTask(1, disco);
if (discoveredQueue.put(tp))
return UPNP_E_FINISH;
}
break;
return OnAlive(disco);
}
case UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE:
{
Upnp_Discovery *disco = (Upnp_Discovery *)evp;
if (isMSDevice(disco->DeviceType) ||
isCDService(disco->ServiceType)) {
DiscoveredTask *tp = new DiscoveredTask(0, disco);
if (discoveredQueue.put(tp))
return UPNP_E_FINISH;
}
break;
return OnByeBye(disco);
}
default: