* Thread timer management class.
*/
-#include <set>
+#include <vector>
#include <boost/noncopyable.hpp>
-#include <moof/backend.hh>
#include <moof/thread.hh>
/**
* A runloop is a loop with scheduled timers.
*/
-class runloop
+class runloop : public boost::noncopyable
{
public:
* Construct a runloop.
*/
runloop() :
- stop_(false),
- thread_id_(0) {}
+ stop_(false)
+ {
+#if ENABLE_THREADS
+ thread_id_ = 0;
+#endif
+ }
/**
- * Deconstruct the runloop.
+ * Do one iteration of the runloop.
*/
- ~runloop();
+ void run_once();
/**
void stop(int code = 0);
- /** Get the runloop of the current thread.
- * \return The current runloop or 0 if none is running in the current
- * thread.
- */
- static runloop* current();
+ void add_timer(timer& timer);
+ void remove_timer(timer& timer);
private:
- friend class timer;
-
- void add_timer(timer* timer);
- void remove_timer(timer* timer);
-
-
bool stop_;
int code_;
- typedef std::set<timer*> timer_table;
+ typedef std::vector<timer*> timer_table;
timer_table timers_;
timer_table::iterator timers_it_;
MOOF_DECLARE_MUTEX(timers_mutex_);
uint32_t thread_id_;
#endif
-
-
- backend backend_;
};