From bcc1f933702770c276e7353d71cb0c5fff75bc4a Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sun, 26 Jan 2014 15:04:56 +0100 Subject: upnp: add class UpnpCallback Each Upnp*Async() call passes a new cookie pointer, and the cookie passed to UpnpRegisterClient() appears to be ignored. Using this interface is a more elegant approach than having one single "handler" function. --- src/lib/upnp/Discovery.hxx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/lib/upnp/Discovery.hxx') diff --git a/src/lib/upnp/Discovery.hxx b/src/lib/upnp/Discovery.hxx index 3208f8727..1a126edfd 100644 --- a/src/lib/upnp/Discovery.hxx +++ b/src/lib/upnp/Discovery.hxx @@ -20,6 +20,7 @@ #ifndef _UPNPPDISC_H_X_INCLUDED_ #define _UPNPPDISC_H_X_INCLUDED_ +#include "Callback.hxx" #include "Device.hxx" #include "WorkQueue.hxx" #include "thread/Mutex.hxx" @@ -46,7 +47,7 @@ public: * We are only interested in MediaServers with a ContentDirectory service * for now, but this could be made more general, by removing the filtering. */ -class UPnPDeviceDirectory { +class UPnPDeviceDirectory final : UpnpCallback { /** * Each appropriate discovery event (executing in a libupnp thread * context) queues the following task object for processing by the @@ -154,6 +155,9 @@ private: int OnAlive(Upnp_Discovery *disco); int OnByeBye(Upnp_Discovery *disco); int cluCallBack(Upnp_EventType et, void *evp); + + /* virtual methods from class UpnpCallback */ + virtual int Invoke(Upnp_EventType et, void *evp) override; }; -- cgit v1.2.3