4 #ifndef SWIFT_SIM_XSWIFTBUS_DBUSOBJECT_H
5 #define SWIFT_SIM_XSWIFTBUS_DBUSOBJECT_H
10 #include "dbusconnection.h"
13 #include <XPLM/XPLMDisplay.h>
57 void sendDBusReply(
const std::string &destination, dbus_uint32_t serial,
const T &argument)
62 m_dbusConnection->sendMessage(reply);
67 void sendDBusReply(
const std::string &destination, dbus_uint32_t serial,
const std::vector<T> &array)
72 m_dbusConnection->sendMessage(reply);
82 static void dbusObjectPathUnregisterFunction(DBusConnection *connection,
void *data);
83 static DBusHandlerResult dbusObjectPathMessageFunction(DBusConnection *connection, DBusMessage *message,
86 std::shared_ptr<CDBusConnection> m_dbusConnection;
87 std::string m_interfaceName;
88 std::string m_objectPath;
91 std::deque<std::function<void()>> m_qeuedDBusCalls;
93 const DBusObjectPathVTable m_dbusObjectPathVTable = {
94 dbusObjectPathUnregisterFunction, dbusObjectPathMessageFunction,
nullptr,
nullptr,
nullptr,
nullptr
void appendArgument(bool value)
Append argument. Make sure to call.
void beginArgumentWrite()
Begin writing argument.
static CDBusMessage createReply(const std::string &destination, dbus_uint32_t serial)
Creates a DBus message containing a DBus reply.
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 sendDBusReply(const std::string &destination, dbus_uint32_t serial, const std::vector< T > &array)
Send DBus reply.
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.
void sendDBusReply(const std::string &destination, dbus_uint32_t serial, const T &argument)
Send DBus reply.
CDBusObject(CSettingsProvider *settingsProvider)
Constructor.
void setDBusConnection(const std::shared_ptr< CDBusConnection > &dbusConnection)
Set the assigned DBus connection.
virtual ~CDBusObject()
Destructor.
virtual DBusHandlerResult dbusMessageHandler(const CDBusMessage &message)=0
DBus message handler.
Something having access to the settings.
Something owning the settings.
Plugin loaded by X-Plane which publishes a DBus service.