Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #ifndef _SAGA_TASK_CONTAINER_HPP
00008 #define _SAGA_TASK_CONTAINER_HPP
00009
00010
00011 #include <vector>
00012
00013
00014 #include <saga/saga/base.hpp>
00015 #include <saga/saga/task.hpp>
00016
00017 #include <saga/saga/detail/monitorable.hpp>
00018
00019
00020 #if defined(BOOST_MSVC)
00021 #pragma warning(push)
00022 #pragma warning(disable: 4251 4231 4275 4660)
00023 #endif
00024
00026 namespace saga
00027 {
00034 class SAGA_EXPORT task_container
00035 : public saga::object,
00036 public saga::detail::monitorable<task_container>
00037 {
00038 private:
00040
00041 TR1::shared_ptr<saga::impl::task_container> get_impl_sp (void) const;
00042 saga::impl::task_container* get_impl (void) const;
00043
00044 friend struct impl::runtime;
00045 friend struct saga::detail::monitorable <task_container>;
00047
00048 public:
00052 enum wait_mode
00053 {
00054 All = 1,
00055
00056 Any = 2
00057
00058 };
00059
00064 task_container (void);
00065
00070 ~task_container (void);
00071
00076 void run ();
00077
00084 void add_task (task t);
00085
00092 void remove_task (task t);
00093
00099 std::vector <task> list_tasks (void) const;
00100
00106 std::vector <task_base::state> get_states (void) const;
00107
00113 void cancel (void);
00114
00120 std::vector <task> wait (wait_mode mode = All, float timeout = -1.0);
00121 };
00122
00124 }
00125
00126
00127 #if defined(BOOST_MSVC)
00128 #pragma warning(pop)
00129 #endif
00130
00131 #endif // _SAGA_TASK_CONTAINER_HPP
00132