summaryrefslogtreecommitdiff
path: root/libdbus-qeventloop/dbusconnectioneventloop.h
diff options
context:
space:
mode:
authorMartin Wolf <ext-martin.2.wolf@nokia.com>2010-02-03 10:13:44 +0200
committerMartin Wolf <ext-martin.2.wolf@nokia.com>2010-02-03 10:13:44 +0200
commit06644af1a621f2afbd42957afc9cfda24056df54 (patch)
treedac557aab7a7bff21ad7b7c0ccc877bf42f5303e /libdbus-qeventloop/dbusconnectioneventloop.h
parent8bff62c335842b4c850cc09716e79c2f556247c7 (diff)
Added debian packaging info and libdbus-qeventloop library
Diffstat (limited to 'libdbus-qeventloop/dbusconnectioneventloop.h')
-rw-r--r--libdbus-qeventloop/dbusconnectioneventloop.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/libdbus-qeventloop/dbusconnectioneventloop.h b/libdbus-qeventloop/dbusconnectioneventloop.h
new file mode 100644
index 0000000..ef46ea2
--- /dev/null
+++ b/libdbus-qeventloop/dbusconnectioneventloop.h
@@ -0,0 +1,62 @@
+#ifndef DBUSCONNECTIONEVENTLOOP_H
+#define DBUSCONNECTIONEVENTLOOP_H
+
+#include <QObject>
+#include <QList>
+#include <QMultiHash>
+#include <QHash>
+
+#include <dbus/dbus.h>
+
+class QSocketNotifier;
+class QTimerEvent;
+
+class DBUSConnectionEventLoop : public QObject
+{
+ Q_OBJECT
+private:
+ Q_DISABLE_COPY(DBUSConnectionEventLoop)
+
+public:
+ DBUSConnectionEventLoop();
+ virtual ~DBUSConnectionEventLoop();
+
+public:
+ bool initConnection(DBusConnection* conn);
+
+ class Watcher
+ {
+ public:
+ Watcher() : watch(0), read(0), write(0) {}
+
+ DBusWatch* watch;
+ QSocketNotifier* read;
+ QSocketNotifier* write;
+ };
+
+ typedef QMultiHash<int, Watcher> Watchers;
+ typedef QHash<int, DBusTimeout*> Timeouts;
+ typedef QList<DBusConnection*> Connections;
+
+ Watchers watchers;
+ Timeouts timeouts;
+ Connections connections;
+
+public slots:
+ void readSocket(int fd);
+ void writeSocket(int fd);
+ void dispatch();
+
+protected:
+ void timerEvent(QTimerEvent *e);
+
+ static dbus_bool_t addWatch(DBusWatch *watch, void *data);
+ static void removeWatch(DBusWatch *watch, void *data);
+ static void toggleWatch(DBusWatch *watch, void *data);
+ static dbus_bool_t addTimeout(DBusTimeout *timeout, void *data);
+ static void removeTimeout(DBusTimeout *timeout, void *data);
+ static void toggleTimeout(DBusTimeout *timeout, void *data);
+ static void wakeupMain(void *data);
+};
+
+#endif // DBUSCONNECTIONEVENTLOOP_H