-/*] Copyright (c) 2009-2010, Charles McGarvey [**************************
+/*] Copyright (c) 2009-2011, Charles McGarvey [*****************************
**] All rights reserved.
*
-* vi:ts=4 sw=4 tw=75
-*
* Distributable under the terms and conditions of the 2-clause BSD license;
* see the file COPYING for a complete text of the license.
*
-**************************************************************************/
+*****************************************************************************/
#ifndef _MOOF_RUNLOOP_HH_
#define _MOOF_RUNLOOP_HH_
#include <boost/noncopyable.hpp>
-#include <moof/backend.hh>
#include <moof/thread.hh>
// forward declarations
class timer;
-
/**
* A runloop is a loop with scheduled timers.
}
/**
- * Deconstruct the runloop.
+ * Do one iteration of the runloop.
+ * \return The number of tasks which were given time.
*/
- ~runloop();
-
+ int run_once();
/**
* Start running the runloop.
*/
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();
-
+ bool is_running() const
+ {
+ return !stop_;
+ }
void add_timer(timer& timer);
void remove_timer(timer& timer);
-
private:
bool stop_;
- int code_;
+ int code_;
typedef std::vector<timer*> timer_table;
timer_table timers_;
MOOF_DECLARE_MUTEX(timers_mutex_);
uint32_t thread_id_;
#endif
-
-
- backend backend_;
};