MeVisLabToolboxReference
|
00001 // **InsertLicense** code 00002 //---------------------------------------------------------------------------------- 00009 //---------------------------------------------------------------------------------- 00010 00011 00012 #ifndef __mlBackgroundTaskMessageQueue_H 00013 #define __mlBackgroundTaskMessageQueue_H 00014 00015 00016 // Local includes 00017 #include "MLBackgroundTasksSystem.h" 00018 00019 #include "mlModuleIncludes.h" 00020 00021 #include <deque> 00022 #include <boost/thread/mutex.hpp> 00023 #include <boost/thread/condition.hpp> 00024 00025 ML_START_NAMESPACE 00026 00027 //----------------------------------------------------------------------- 00028 00029 class BackgroundTaskMessage; 00030 00031 class MLBACKGROUNDTASKS_EXPORT BackgroundTaskMessageQueue 00032 { 00033 ML_DISALLOW_COPY_AND_ASSIGN(BackgroundTaskMessageQueue) 00034 00035 public: 00036 BackgroundTaskMessageQueue(); 00037 ~BackgroundTaskMessageQueue(); 00038 00042 BackgroundTaskMessage* waitForMessage(); 00043 00046 void addMessage(BackgroundTaskMessage* message); 00047 00051 BackgroundTaskMessage* nextMessage(); 00052 00056 BackgroundTaskMessage* nextMessage(int& availableMessages); 00057 00061 BackgroundTaskMessage* nextMessageNoLock(); 00062 00064 bool isCanceled() const { return _isCanceled; } 00065 00067 void cancel(); 00068 00070 void cancelAndNotify(); 00071 00072 private: 00074 std::deque<BackgroundTaskMessage*> _queue; 00076 boost::mutex _mutex; 00078 boost::condition _messageAvailable; 00079 00081 bool _isCanceled; 00082 }; 00083 00084 ML_END_NAMESPACE 00085 00086 #endif 00087 00088