mirror of
https://github.com/transmission/transmission.git
synced 2026-05-08 09:39:08 +01:00
Refactor DBus IPC to allow for further extensibility
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
* This file Copyright (C) 2015 Mnemosyne LLC
|
||||
*
|
||||
* It may be used under the GNU GPL versions 2 or 3
|
||||
* or any future license endorsed by Mnemosyne LLC.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include <QDBusConnection>
|
||||
#include <QDBusMessage>
|
||||
#include <QDBusReply>
|
||||
#include <QString>
|
||||
#include <QVariant>
|
||||
|
||||
#include "DBusInteropHelper.h"
|
||||
#include "InteropObject.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
const QLatin1String DBUS_SERVICE ("com.transmissionbt.Transmission");
|
||||
const QLatin1String DBUS_OBJECT_PATH ("/com/transmissionbt/Transmission");
|
||||
const QLatin1String DBUS_INTERFACE ("com.transmissionbt.Transmission");
|
||||
}
|
||||
|
||||
bool
|
||||
DBusInteropHelper::isConnected () const
|
||||
{
|
||||
return !QDBusConnection::sessionBus ().isConnected ();
|
||||
}
|
||||
|
||||
QVariant
|
||||
DBusInteropHelper::addMetainfo (const QString& metainfo)
|
||||
{
|
||||
QDBusMessage request = QDBusMessage::createMethodCall (DBUS_SERVICE, DBUS_OBJECT_PATH,
|
||||
DBUS_INTERFACE, QLatin1String ("AddMetainfo"));
|
||||
request.setArguments (QVariantList () << metainfo);
|
||||
|
||||
const QDBusReply<bool> response = QDBusConnection::sessionBus ().call (request);
|
||||
return response.isValid () ? QVariant (response.value ()) : QVariant ();
|
||||
}
|
||||
|
||||
void
|
||||
DBusInteropHelper::registerObject (QObject * parent)
|
||||
{
|
||||
QDBusConnection bus = QDBusConnection::sessionBus ();
|
||||
if (!bus.isConnected ())
|
||||
return;
|
||||
|
||||
if (!bus.registerService (DBUS_SERVICE))
|
||||
std::cerr << "couldn't register " << qPrintable (DBUS_SERVICE) << std::endl;
|
||||
if (!bus.registerObject (DBUS_OBJECT_PATH, new InteropObject (parent), QDBusConnection::ExportAllSlots))
|
||||
std::cerr << "couldn't register " << qPrintable (DBUS_OBJECT_PATH) << std::endl;
|
||||
}
|
||||
Reference in New Issue
Block a user