aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/db/upnp/Discovery.cxx44
1 files changed, 29 insertions, 15 deletions
diff --git a/src/db/upnp/Discovery.cxx b/src/db/upnp/Discovery.cxx
index 8b88a0251..da0fe5c8d 100644
--- a/src/db/upnp/Discovery.cxx
+++ b/src/db/upnp/Discovery.cxx
@@ -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: