30 #ifndef INCLUDED_RunLoopManager_h_GUID_cca4d4ff_064a_48bb_44db_b8414fb8d202 31 #define INCLUDED_RunLoopManager_h_GUID_cca4d4ff_064a_48bb_44db_b8414fb8d202 37 #include <boost/noncopyable.hpp> 45 virtual void signalStart() = 0;
46 virtual void signalAndWaitForStart() = 0;
51 virtual void reportStarting() = 0;
52 virtual void reportRunning() = 0;
53 virtual bool shouldContinue() = 0;
54 virtual void reportStopped() = 0;
59 virtual void signalShutdown() = 0;
60 virtual void signalAndWaitForShutdown() = 0;
70 enum RunningState { STATE_STOPPED, STATE_STARTING, STATE_RUNNING };
76 virtual void signalStart() = 0;
79 virtual void signalAndWaitForStart() = 0;
85 virtual void signalShutdown() = 0;
88 virtual void signalAndWaitForShutdown() = 0;
96 void reportStarting();
99 bool shouldContinue();
100 void reportStopped();
106 virtual void reportStateChange_(RunningState s) = 0;
109 void setShouldStop_(
bool value);
113 volatile bool shouldStop_;
119 enum StartTime { REPORT_START_IMMEDIATELY, DELAY_REPORTING_START };
127 inline void RunLoopManagerBase::reportStarting() {
128 reportStateChange_(STATE_STARTING);
132 reportStateChange_(STATE_RUNNING);
135 inline bool RunLoopManagerBase::shouldContinue() {
139 inline void RunLoopManagerBase::reportStopped() {
140 reportStateChange_(STATE_STOPPED);
147 inline LoopGuard::LoopGuard(
LoopInterface &mgr, LoopGuard::StartTime t)
149 mgr_.reportStarting();
150 if (t == REPORT_START_IMMEDIATELY) {
151 mgr_.reportRunning();
155 inline LoopGuard::~LoopGuard() {
156 mgr_.reportStopped();
161 #endif // INCLUDED_RunLoopManager_h_GUID_cca4d4ff_064a_48bb_44db_b8414fb8d202 Definition: RunLoopManager.h:42
Definition: RunLoopManager.h:57
Base class for implementations of a RunLoopManager that use various synchronization libraries...
Definition: RunLoopManager.h:65
void reportRunning()
Notify the run loop manager that the run loop is now running.
Definition: RunLoopManager.h:131
RAII class to signal loop start and end.
Definition: RunLoopManager.h:117
Definition: RunLoopManager.h:49
Definition: RunLoopManager.h:43
void setShouldStop_(bool value)
internal utility function.
Definition: RunLoopManager.h:143