Chris@102: // Copyright (C) 2014 Ian Forbed Chris@102: // Copyright (C) 2014 Vicente J. Botet Escriba Chris@102: // Chris@102: // Distributed under the Boost Software License, Version 1.0. (See accompanying Chris@102: // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@102: // Chris@102: Chris@102: #ifndef BOOST_THREAD_EXECUTORS_SCHEDULING_ADAPTOR_HPP Chris@102: #define BOOST_THREAD_EXECUTORS_SCHEDULING_ADAPTOR_HPP Chris@102: Chris@102: #include Chris@102: Chris@102: namespace boost Chris@102: { Chris@102: namespace executors Chris@102: { Chris@102: Chris@102: template Chris@102: class scheduling_adpator : public detail::scheduled_executor_base<> Chris@102: { Chris@102: private: Chris@102: Executor& _exec; Chris@102: thread _scheduler; Chris@102: public: Chris@102: Chris@102: scheduling_adpator(Executor& ex) Chris@102: : super(), Chris@102: _exec(ex), Chris@102: _scheduler(&super::loop, this) {} Chris@102: Chris@102: ~scheduling_adpator() Chris@102: { Chris@102: this->close(); Chris@102: _scheduler.join(); Chris@102: } Chris@102: Chris@102: Executor& underlying_executor() Chris@102: { Chris@102: return _exec; Chris@102: } Chris@102: Chris@102: private: Chris@102: typedef detail::scheduled_executor_base<> super; Chris@102: }; //end class Chris@102: Chris@102: } //end executors Chris@102: Chris@102: using executors::scheduling_adpator; Chris@102: Chris@102: } //end boost Chris@102: #endif