summaryrefslogtreecommitdiff
path: root/src/third_party/boost-1.60.0/boost/thread/executors/detail/scheduled_executor_base.hpp
diff options
context:
space:
mode:
authorMark Benvenuto <mark.benvenuto@mongodb.com>2016-03-31 15:09:29 -0400
committerMark Benvenuto <mark.benvenuto@mongodb.com>2016-03-31 15:09:29 -0400
commit869912de45bfec53f8fd15c4f716b49ac2ca7aa4 (patch)
tree97934f62054ebb1f1c78812196f7c7bded1fc1b3 /src/third_party/boost-1.60.0/boost/thread/executors/detail/scheduled_executor_base.hpp
parent319e895cc28b4aade6fa843583e0fd2ea96cd7a0 (diff)
downloadmongo-869912de45bfec53f8fd15c4f716b49ac2ca7aa4.tar.gz
SERVER-17294 Boost 1.60
Diffstat (limited to 'src/third_party/boost-1.60.0/boost/thread/executors/detail/scheduled_executor_base.hpp')
-rw-r--r--src/third_party/boost-1.60.0/boost/thread/executors/detail/scheduled_executor_base.hpp66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/third_party/boost-1.60.0/boost/thread/executors/detail/scheduled_executor_base.hpp b/src/third_party/boost-1.60.0/boost/thread/executors/detail/scheduled_executor_base.hpp
new file mode 100644
index 00000000000..ec0038f7e3e
--- /dev/null
+++ b/src/third_party/boost-1.60.0/boost/thread/executors/detail/scheduled_executor_base.hpp
@@ -0,0 +1,66 @@
+// Copyright (C) 2014 Ian Forbed
+// Copyright (C) 2014-2015 Vicente J. Botet Escriba
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_THREAD_EXECUTORS_DETAIL_SCHEDULED_EXECUTOR_BASE_HPP
+#define BOOST_THREAD_EXECUTORS_DETAIL_SCHEDULED_EXECUTOR_BASE_HPP
+
+#include <boost/thread/concurrent_queues/sync_timed_queue.hpp>
+#include <boost/thread/executors/detail/priority_executor_base.hpp>
+#include <boost/thread/executors/work.hpp>
+#include <boost/thread/thread.hpp>
+
+#include <boost/atomic.hpp>
+#include <boost/function.hpp>
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+namespace executors
+{
+namespace detail
+{
+ template <class Clock=chrono::steady_clock>
+ class scheduled_executor_base : public priority_executor_base<concurrent::sync_timed_queue<executors::work_pq, Clock > >
+ {
+ public:
+ typedef executors::work_pq work;
+ typedef Clock clock;
+ typedef typename clock::duration duration;
+ typedef typename clock::time_point time_point;
+ protected:
+
+ scheduled_executor_base() {}
+ public:
+
+ ~scheduled_executor_base()
+ {
+ if(! this->closed())
+ {
+ this->close();
+ }
+ }
+
+ void submit_at(work w, const time_point& tp)
+ {
+ this->_workq.push(boost::move(w), tp);
+ }
+
+ void submit_after(work w, const duration& dura)
+ {
+ this->_workq.push(boost::move(w), dura+clock::now());
+ }
+
+ }; //end class
+
+} //end detail namespace
+} //end executors namespace
+} //end boost namespace
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif