/* -*- C++ -*- * * Copyright (C) 2005 Thiago Macieira * Copyright (C) 2006 Trolltech AS. All rights reserved. * Author: Thiago Macieira * * Licensed under the Academic Free License version 2.1 * * 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 option) 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. * */ #ifndef QDBUS_STANDARD_INTERFACES_H #define QDBUS_STANDARD_INTERFACES_H #include "qdbusinterface.h" #include #include #include class QDBusConnection; class QDBUS_EXPORT QDBusPeerInterface: public QDBusInterface { public: static inline const char* staticInterfaceName() { return DBUS_INTERFACE_PEER; } static inline const char* staticIntrospectionData() { return "" "" ""; } public: explicit QDBusPeerInterface(const QDBusObject& obj) : QDBusInterface(obj, staticInterfaceName()) { } QDBusPeerInterface(QDBusConnection& conn, const QString& service, const QString& path) : QDBusInterface(conn, service, path, staticInterfaceName()) { } ~QDBusPeerInterface(); inline virtual QString introspectionData() const { return staticIntrospectionData(); } inline void ping() { call(QLatin1String("Ping")); } }; class QDBUS_EXPORT QDBusIntrospectableInterface: public QDBusInterface { public: static inline const char* staticInterfaceName() { return DBUS_INTERFACE_INTROSPECTABLE; } static inline const char* staticIntrospectionData() { return "" "" "" "" ""; } public: explicit QDBusIntrospectableInterface(const QDBusObject& obj) : QDBusInterface(obj, staticInterfaceName()) { } QDBusIntrospectableInterface(QDBusConnection& conn, const QString& service, const QString& path) : QDBusInterface(conn, service, path, staticInterfaceName()) { } ~QDBusIntrospectableInterface(); inline virtual QString introspectionData() const { return staticIntrospectionData(); } inline QString introspect() { return call(QLatin1String("Introspect")).at(0).toString(); } }; class QDBUS_EXPORT QDBusPropertiesInterface: public QDBusInterface { public: static inline const char* staticInterfaceName() { return DBUS_INTERFACE_PROPERTIES; } static inline const char* staticIntrospectionData() { return "" "" "" "" "" "" "" "" "" "" ""; } public: explicit QDBusPropertiesInterface(const QDBusObject& obj) : QDBusInterface(obj, staticInterfaceName()) { } QDBusPropertiesInterface(QDBusConnection& conn, const QString& service, const QString& path) : QDBusInterface(conn, service, path, staticInterfaceName()) { } ~QDBusPropertiesInterface(); inline virtual QString introspectionData() const { return staticIntrospectionData(); } inline void set(const QString& interfaceName, const QString& propertyName, QVariant value) { call(QLatin1String("Set.ssv"), interfaceName, propertyName, value); } inline QVariant get(const QString& interfaceName, const QString& propertyName) { return call(QLatin1String("Get.ss"), interfaceName, propertyName).at(0); } }; class QDBUS_EXPORT QDBusBusInterface: public QDBusInterface { public: static inline const char* staticInterfaceName() { return DBUS_INTERFACE_DBUS; } static const char* staticIntrospectionData(); public: explicit QDBusBusInterface(const QDBusObject& obj) : QDBusInterface(obj, staticInterfaceName()) { } QDBusBusInterface(QDBusConnection& conn, const QString& service, const QString& path) : QDBusInterface(conn, service, path, staticInterfaceName()) { } ~QDBusBusInterface(); inline virtual QString introspectionData() const { return staticIntrospectionData(); } inline unsigned requestName(const QString& name, unsigned flags) { return call(QLatin1String("RequestName.su"), name, flags).at(0).toUInt(); } inline unsigned releaseName(const QString& name) { return call(QLatin1String("ReleaseName.s"), name).at(0).toUInt(); } inline unsigned startServiceByName(const QString& name, unsigned flags) { return call(QLatin1String("StartServiceByName.su"), name, flags).at(0).toUInt(); } inline QString Hello() { return call(QLatin1String("Hello")).at(0).toString(); } inline bool nameHasOwner(const QString& name) { return call(QLatin1String("NameHasOwner.s"), name).at(0).toBool(); } inline QStringList listNames() { return call(QLatin1String("ListNames")).at(0).toStringList(); } inline void addMatch(const QString& rule) { call(QLatin1String("AddMatch"), rule); } inline void removeMatch(const QString& rule) { call(QLatin1String("RemoveMatch"), rule); } inline QString getNameOwner(const QString& name) { return call(QLatin1String("GetNameOwner.s"), name).at(0).toString(); } inline QStringList listQueuedOwners(const QString& name) { return call(QLatin1String("ListQueuedOwners.s"), name).at(0).toStringList(); } inline quint32 getConnectionUnixUser(const QString& connectionName) { return call(QLatin1String("GetConnectionUnixUser.s"), connectionName).at(0).toUInt(); } inline quint32 getConnectionUnixProcessID(const QString& connectionName) { return call(QLatin1String("GetConnectionUnixProcessID.s"), connectionName).at(0).toUInt(); } inline QByteArray getConnectionSELinuxSecurityContext(const QString& connectionName) { return call(QLatin1String("GetConnectionSELinuxSecurityContext.s"), connectionName).at(0).toByteArray(); } inline void reloadConfig() { call(QLatin1String("ReloadConfig")); } }; namespace org { namespace freedesktop { namespace DBus { typedef ::QDBusPeerInterface Peer; typedef ::QDBusIntrospectableInterface Introspectable; typedef ::QDBusPropertiesInterface Properties; } } } #endif