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 (void) const;
00042
00043 friend struct impl::runtime;
00044 friend struct detail::monitorable <task_container>;
00046
00047 public:
00052 task_container (void);
00053
00058 ~task_container (void);
00059
00064 void run ();
00065
00072 void add_task (task t);
00073
00080 void remove_task (task t);
00081
00087 std::vector <task> list_tasks (void) const;
00088
00094 std::vector <task_base::state> get_states (void) const;
00095
00101 void cancel (void);
00102
00110 std::vector <task> wait (const float timeout = -1.0);
00111 };
00112
00114 }
00115
00116
00117 #if defined(BOOST_MSVC)
00118 #pragma warning(pop)
00119 #endif
00120
00121 #endif // _SAGA_TASK_CONTAINER_HPP
00122