--- a/src/contentdirectory.hxx
+++ b/src/contentdirectory.hxx
@@ -23,13 +23,34 @@
#include "libupnpp/device/device.hxx"
#include "libupnpp/soaphelp.hxx"
+#include "cdplugins/cdplugin.hxx"
+
using namespace UPnPP;
-class ContentDirectory : public UPnPProvider::UpnpService {
+class ContentDirectory : public UPnPProvider::UpnpService,
+ public CDPluginServices {
public:
ContentDirectory(UPnPProvider::UpnpDevice *dev);
~ContentDirectory();
-
+
+ /// Returns something like "/tidal" (no end slash)
+ virtual std::string getpathprefix(CDPlugin *);
+
+ /// Retrieve the IP address and port for the libupnp server. URLs
+ /// intended to be served this way (by adding a vdir) should use
+ /// these as host/port
+ virtual std::string getupnpaddr(CDPlugin *);
+ virtual int getupnpport(CDPlugin *);
+
+ /// Add a virtual directory and set file operation interface. path
+ /// must be equal or begin with the pathprefix.
+ virtual bool setfileops(CDPlugin *, const std::string& path,
+ UPnPProvider::VirtualDir::FileOps ops);
+
+ /// Access the main configuration file.
+ virtual ConfSimple *getconfig(CDPlugin *);
+ virtual const std::vector<std::string> getexecpath(CDPlugin *);
+
private:
int actGetSearchCapabilities(const SoapIncoming& sc, SoapOutgoing& data);
int actGetSortCapabilities(const SoapIncoming& sc, SoapOutgoing& data);