//============================================================================= // // File : RootService.h // Creation date : Fri Aug 08 18:00:00 2008 GMT by Fabio Bas // // This file is part of the KVIrc irc client distribution // Copyright (C) 2008 Fabio Bas (ctrlaltca at gmail dot com) // // This program is FREE software. You can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your opinion) any later version. // // This program is distributed in the HOPE that it will be USEFUL, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, write to the Free Software Foundation, // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // // Original Copyright follows: //============================================================================= /*************************************************************************** RootService.h - description ------------------- begin : Mon Jul 25 2005 copyright : (C) 2005 by Diederik van der Boor email : vdboor --at-- codingdomain.com ***************************************************************************/ #ifndef UPNP_ROOTSERVICE_H #define UPNP_ROOTSERVICE_H #include "Service.h" namespace UPnP { #define InternetGatewayDeviceType "urn:schemas-upnp-org:device:InternetGatewayDevice:1" /** * The services of a device can be retrieved using the device root service. * The URL of the root service is returned by an SSDP broadcast. * The root service returns the meta information and list of services the device supports. * * @author Diederik van der Boor * @ingroup NetworkUPnP */ class RootService : public Service { public: // public methods // The constructor RootService(const QString &hostname, int port, const QString &rootUrl); // The destructor virtual ~RootService(); // Return the device type QString getDeviceType() const; // Return a service from the cached root device entry ServiceParameters getServiceById(const QString &serviceId) const; // Return a service from a cached embedded device entry bool getServiceById(const QString &serviceId, const QString &deviceUdn, ServiceParameters ¶ms) const; // Return a service from the cached root device entry ServiceParameters getServiceByType(const QString &serviceType) const; // Return a service from a cached embedded device entry bool getServiceByType(const QString &serviceType, const QString &deviceUdn, ServiceParameters ¶ms) const; // Query the device for its service list void queryDevice(); protected: // Protected methods // The control point received a response to callInformationUrl() virtual void gotInformationResponse(const QDomNode &response); private: // Private methods // Recursively add all devices and embedded devices to the deviceServices_ map void addDeviceServices(const QDomNode &device); private: // The device type QString m_szDeviceType; // A collection of all services provided by the device QMap m_deviceServices; // The hostname of the device QString m_szHostname; // The port of the device int m_iPort; // The udn of the root device QString m_szRootUdn; }; } #endif