From aa64a5328edb4fcafb53cd512d37f9ceed8ed1c5 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 17 Jan 2014 00:26:05 +0100 Subject: db/upnp: split cluCallback() --- src/db/upnp/Discovery.cxx | 44 +++++++++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 15 deletions(-) (limited to 'src') 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: -- cgit v1.2.3