summaryrefslogtreecommitdiff
path: root/include/dbus-c++/eventloop.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/dbus-c++/eventloop.h')
-rw-r--r--include/dbus-c++/eventloop.h181
1 files changed, 115 insertions, 66 deletions
diff --git a/include/dbus-c++/eventloop.h b/include/dbus-c++/eventloop.h
index 5b1b808..53f90a7 100644
--- a/include/dbus-c++/eventloop.h
+++ b/include/dbus-c++/eventloop.h
@@ -31,7 +31,8 @@
#include "api.h"
#include "util.h"
-namespace DBus {
+namespace DBus
+{
/*
* these Default *classes implement a very simple event loop which
@@ -46,38 +47,62 @@ class DXXAPI DefaultTimeout
{
public:
- DefaultTimeout(int interval, bool repeat, DefaultMainLoop *);
-
- virtual ~DefaultTimeout();
-
- bool enabled(){ return _enabled; }
- void enabled(bool e){ _enabled = e; }
-
- int interval(){ return _interval; }
- void interval(int i){ _interval = i; }
+ DefaultTimeout(int interval, bool repeat, DefaultMainLoop *);
+
+ virtual ~DefaultTimeout();
+
+ bool enabled()
+ {
+ return _enabled;
+ }
+ void enabled(bool e)
+ {
+ _enabled = e;
+ }
+
+ int interval()
+ {
+ return _interval;
+ }
+ void interval(int i)
+ {
+ _interval = i;
+ }
+
+ bool repeat()
+ {
+ return _repeat;
+ }
+ void repeat(bool r)
+ {
+ _repeat = r;
+ }
+
+ void *data()
+ {
+ return _data;
+ }
+ void data(void *d)
+ {
+ _data = d;
+ }
+
+ Slot<void, DefaultTimeout &> expired;
- bool repeat(){ return _repeat; }
- void repeat(bool r){ _repeat = r; }
-
- void *data(){ return _data; }
- void data(void *d){ _data = d; }
-
- Slot<void, DefaultTimeout &> expired;
-
private:
- bool _enabled;
+ bool _enabled;
+
+ int _interval;
+ bool _repeat;
- int _interval;
- bool _repeat;
+ double _expiration;
- double _expiration;
+ void *_data;
- void *_data;
-
- DefaultMainLoop *_disp;
+ DefaultMainLoop *_disp;
-friend class DefaultMainLoop;
+ friend class DefaultMainLoop;
};
typedef std::list< DefaultTimeout *> DefaultTimeouts;
@@ -86,38 +111,62 @@ class DXXAPI DefaultWatch
{
public:
- DefaultWatch(int fd, int flags, DefaultMainLoop *);
-
- virtual ~DefaultWatch();
-
- bool enabled(){ return _enabled; }
- void enabled(bool e){ _enabled = e; }
-
- int descriptor(){ return _fd; }
-
- int flags(){ return _flags; }
- void flags(int f){ _flags = f; }
-
- int state(){ return _state; }
-
- void *data(){ return _data; }
- void data(void *d){ _data = d; }
-
- Slot<void, DefaultWatch &> ready;
+ DefaultWatch(int fd, int flags, DefaultMainLoop *);
+
+ virtual ~DefaultWatch();
+
+ bool enabled()
+ {
+ return _enabled;
+ }
+ void enabled(bool e)
+ {
+ _enabled = e;
+ }
+
+ int descriptor()
+ {
+ return _fd;
+ }
+
+ int flags()
+ {
+ return _flags;
+ }
+ void flags(int f)
+ {
+ _flags = f;
+ }
+
+ int state()
+ {
+ return _state;
+ }
+
+ void *data()
+ {
+ return _data;
+ }
+ void data(void *d)
+ {
+ _data = d;
+ }
+
+ Slot<void, DefaultWatch &> ready;
private:
- bool _enabled;
+ bool _enabled;
- int _fd;
- int _flags;
- int _state;
+ int _fd;
+ int _flags;
+ int _state;
- void *_data;
+ void *_data;
- DefaultMainLoop *_disp;
+ DefaultMainLoop *_disp;
-friend class DefaultMainLoop;
+ friend class DefaultMainLoop;
};
typedef std::list< DefaultWatch *> DefaultWatches;
@@ -135,40 +184,40 @@ public:
* Constructor
* \param recursive Set if Mutex should be recursive or not.
*/
- DefaultMutex(bool recursive);
+ DefaultMutex(bool recursive);
- ~DefaultMutex();
+ ~DefaultMutex();
- void lock();
+ void lock();
- void unlock();
+ void unlock();
private:
- pthread_mutex_t _mutex;
+ pthread_mutex_t _mutex;
};
class DXXAPI DefaultMainLoop
{
public:
- DefaultMainLoop();
+ DefaultMainLoop();
- virtual ~DefaultMainLoop();
+ virtual ~DefaultMainLoop();
- virtual void dispatch();
+ virtual void dispatch();
- int _fdunlock[2];
+ int _fdunlock[2];
private:
- DefaultMutex _mutex_t;
- DefaultTimeouts _timeouts;
+ DefaultMutex _mutex_t;
+ DefaultTimeouts _timeouts;
- DefaultMutex _mutex_w;
- DefaultWatches _watches;
+ DefaultMutex _mutex_w;
+ DefaultWatches _watches;
-friend class DefaultTimeout;
-friend class DefaultWatch;
+ friend class DefaultTimeout;
+ friend class DefaultWatch;
};
} /* namespace DBus */