00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef __DBUSXX_EVENTLOOP_INTEGRATION_H
00026 #define __DBUSXX_EVENTLOOP_INTEGRATION_H
00027
00028 #include "api.h"
00029 #include "dispatcher.h"
00030 #include "util.h"
00031 #include "eventloop.h"
00032
00033 namespace DBus {
00034
00035
00036
00037
00038
00039 class BusDispatcher;
00040
00041 class DXXAPI BusTimeout : public Timeout, public DefaultTimeout
00042 {
00043 BusTimeout(Timeout::Internal *, BusDispatcher *);
00044
00045 void toggle();
00046
00047 friend class BusDispatcher;
00048 };
00049
00050 class DXXAPI BusWatch : public Watch, public DefaultWatch
00051 {
00052 BusWatch(Watch::Internal *, BusDispatcher *);
00053
00054 void toggle();
00055
00056 friend class BusDispatcher;
00057 };
00058
00059 class DXXAPI BusDispatcher : public Dispatcher, public DefaultMainLoop
00060 {
00061 public:
00062
00063 BusDispatcher() : _running(false)
00064 {}
00065
00066 ~BusDispatcher()
00067 {}
00068
00069 virtual void enter();
00070
00071 virtual void leave();
00072
00073 virtual void do_iteration();
00074
00075 virtual void run();
00076
00077 bool is_running();
00078
00079 virtual Timeout *add_timeout(Timeout::Internal *);
00080
00081 virtual void rem_timeout(Timeout *);
00082
00083 virtual Watch *add_watch(Watch::Internal *);
00084
00085 virtual void rem_watch(Watch *);
00086
00087 void watch_ready(DefaultWatch &);
00088
00089 void timeout_expired(DefaultTimeout &);
00090
00091 private:
00092
00093 bool _running;
00094 };
00095
00096 }
00097
00098 #endif//__DBUSXX_EVENTLOOP_INTEGRATION_H