16 if (m_dbusConnection) { m_dbusConnection->unregisterDisconnectedCallback(
this); }
21 m_dbusConnection = dbusConnection;
24 m_dbusConnection->registerDisconnectedCallback(
this, disconnectedHandler);
29 assert(m_dbusConnection);
30 m_interfaceName = interfaceName;
31 m_objectPath = objectPath;
32 m_dbusConnection->registerObjectPath(
this, interfaceName, objectPath, m_dbusObjectPathVTable);
37 if (!m_dbusConnection) {
return; }
39 m_dbusConnection->sendMessage(signal);
44 if (!m_dbusConnection) {
return; }
45 m_dbusConnection->sendMessage(message);
52 m_dbusConnection->sendMessage(reply);
58 std::lock_guard<std::mutex> lock(m_mutex);
59 m_queuedDBusCalls.push_back(
func);
64 std::lock_guard<std::mutex> lock(m_mutex);
65 std::for_each(m_queuedDBusCalls.begin(), m_queuedDBusCalls.end(),
66 [](
const auto& dbusCall) { dbusCall(); });
67 m_queuedDBusCalls.clear();
70void CDBusObject::dbusObjectPathUnregisterFunction(DBusConnection* connection,
void* data)
76DBusHandlerResult CDBusObject::dbusObjectPathMessageFunction(DBusConnection* connection, DBusMessage* message,
void* data)
83 dbus_error_init(&err);
85 CDBusMessage dbusMessage(message);
86 return obj->dbusMessageHandler(dbusMessage);
std::function< void()> DisconnectedCallback
Disconnect Callback.
static CDBusMessage createSignal(const std::string &path, const std::string &interfaceName, const std::string &signalName)
Creates a DBus message containing a DBus signal.
static CDBusMessage createReply(const std::string &destination, dbus_uint32_t serial)
Creates a DBus message containing a DBus reply.
virtual void dbusDisconnectedHandler()
Handler which is called when DBusConnection disconnected.
void registerDBusObjectPath(const std::string &interfaceName, const std::string &objectPath)
Register itself with interfaceName and objectPath.
void sendDBusMessage(const CDBusMessage &message)
Send DBus message.
void invokeQueuedDBusCalls()
Invoke all pending DBus calls. They will be executed in the calling thread.
void sendDBusSignal(const std::string &name)
Send DBus signal.
virtual void dbusConnectedHandler()
Handler which is called when DBusCconnection is established.
CDBusObject()=default
Constructor.
void setDBusConnection(const std::shared_ptr< CDBusConnection > &dbusConnection)
Set the assigned DBus connection.
void maybeSendEmptyDBusReply(bool wantsReply, const std::string &destination, dbus_uint32_t serial)
Maybe sends an empty DBus reply (acknowledgement)
virtual ~CDBusObject()
Destructor.
void queueDBusCall(const std::function< void()> &func)
Queue a DBus call to be executed in a different thread.