4 #include "dbusobject.h"
14 if (m_dbusConnection) { m_dbusConnection->unregisterDisconnectedCallback(
this); }
19 m_dbusConnection = dbusConnection;
23 m_dbusConnection->registerDisconnectedCallback(
this, disconnectedHandler);
28 assert(m_dbusConnection);
29 m_interfaceName = interfaceName;
30 m_objectPath = objectPath;
31 m_dbusConnection->registerObjectPath(
this, interfaceName, objectPath, m_dbusObjectPathVTable);
36 if (!m_dbusConnection) {
return; }
38 m_dbusConnection->sendMessage(signal);
43 if (!m_dbusConnection) {
return; }
44 m_dbusConnection->sendMessage(message);
52 m_dbusConnection->sendMessage(reply);
58 std::lock_guard<std::mutex> lock(m_mutex);
59 m_qeuedDBusCalls.push_back(func);
64 std::lock_guard<std::mutex> lock(m_mutex);
65 while (!m_qeuedDBusCalls.empty())
67 m_qeuedDBusCalls.front()();
68 m_qeuedDBusCalls.pop_front();
72 void CDBusObject::dbusObjectPathUnregisterFunction(DBusConnection *connection,
void *data)
78 DBusHandlerResult CDBusObject::dbusObjectPathMessageFunction(DBusConnection *connection, DBusMessage *message,
86 dbus_error_init(&err);
88 CDBusMessage dbusMessage(message);
89 return obj->dbusMessageHandler(dbusMessage);
std::function< void()> DisconnectedCallback
Disconnect Callback.
static CDBusMessage createReply(const std::string &destination, dbus_uint32_t serial)
Creates a DBus message containing a DBus reply.
static CDBusMessage createSignal(const std::string &path, const std::string &interfaceName, const std::string &signalName)
Creates a DBus message containing a DBus signal.
void queueDBusCall(const std::function< void()> &func)
Queue a DBus call to be executed in a different thread.
void registerDBusObjectPath(const std::string &interfaceName, const std::string &objectPath)
Register itself with interfaceName and objectPath.
void sendDBusSignal(const std::string &name)
Send DBus signal.
void maybeSendEmptyDBusReply(bool wantsReply, const std::string &destination, dbus_uint32_t serial)
Maybe sends an empty DBus reply (acknowledgement)
void sendDBusMessage(const CDBusMessage &message)
Send DBus message.
virtual void dbusConnectedHandler()
Handler which is called when DBusCconnection is established.
virtual void dbusDisconnectedHandler()
Handler which is called when DBusConnection disconnected.
void invokeQueuedDBusCalls()
Invoke all pending DBus calls. They will be executed in the calling thread.
CDBusObject(CSettingsProvider *settingsProvider)
Constructor.
void setDBusConnection(const std::shared_ptr< CDBusConnection > &dbusConnection)
Set the assigned DBus connection.
virtual ~CDBusObject()
Destructor.
Something having access to the settings.
Something owning the settings.
Plugin loaded by X-Plane which publishes a DBus service.