bool io_thread::pump_messages() { bool didWork = false; while (have_messages()) { if (halted()) return didWork; if (have_message_queue()) { message_queue().get_message(); message_queue().idle(); } didWork = true; } return didWork; }
bool io_thread::do_io(bool aYieldIfNoWork) { if (iHalted) return false; bool didSome = false; didSome = (iTimerIoService.do_io(false) || didSome); didSome = (iNetworkingIoService.do_io(false) || didSome); didSome = (process_events() || didSome); if (!didSome && aYieldIfNoWork) { if (have_message_queue()) message_queue().idle(); sleep(1); } return didSome; }
bool io_thread::have_messages() const { return have_message_queue() && message_queue().have_message(); }