4 #ifndef SWIFT_SIM_XSWIFTBUS_DBUSDISPATCHER_H
5 #define SWIFT_SIM_XSWIFTBUS_DBUSDISPATCHER_H
8 #include <event2/event.h>
11 #include <unordered_map>
14 #include "dbuscallbacks.h"
21 class CDBusConnection;
22 class CDBusDispatcher;
70 struct EventBaseDeleter
72 void operator()(event_base *obj)
const { event_base_free(obj); }
75 using WatchCallbacks = DBusAsyncCallbacks<DBusWatch>;
76 using TimeoutCallbacks = DBusAsyncCallbacks<DBusTimeout>;
80 dbus_bool_t dbusAddWatch(DBusWatch *watch);
81 void dbusRemoveWatch(
const DBusWatch *watch);
82 void dbusWatchToggled(DBusWatch *watch);
84 dbus_bool_t dbusAddTimeout(DBusTimeout *timeout);
85 void dbusRemoveTimeout(DBusTimeout *timeout);
86 void dbusTimeoutToggled(DBusTimeout *timeout);
88 WatchCallbacks m_watchCallbacks;
89 TimeoutCallbacks m_timeoutCallbacks;
90 std::unordered_multimap<evutil_socket_t, std::unique_ptr<WatchHandler>> m_watchers;
91 std::vector<std::unique_ptr<TimeoutHandler>> m_timeouts;
92 std::unique_ptr<event_base, EventBaseDeleter> m_eventBase;
94 std::vector<IDispatchable *> m_dispatchList;
void add(IDispatchable *dispatchable)
Add dispatchable object.
virtual ~CDBusDispatcher()
Destructor.
void remove(IDispatchable *dispatchable)
Remove dispatchable object.
CDBusDispatcher()
Constructor.
void runOnce()
Dispatches ready handlers and returns without waiting.
void waitAndRun()
Waits for events to be dispatched and handles them.
virtual ~IDispatchable()=default
Default destructor.
virtual void dispatch()=0
Dispatch execution method.
IDispatchable()=default
Default constructor.
Plugin loaded by X-Plane which publishes a DBus service.