-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
50 changed files
with
8,025 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
// | ||
// detail/timer_queue_set.hpp | ||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
// | ||
// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) | ||
// | ||
// 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 ASIO_DETAIL_TIMER_QUEUE_SET_HPP | ||
#define ASIO_DETAIL_TIMER_QUEUE_SET_HPP | ||
|
||
#if defined(_MSC_VER) && (_MSC_VER >= 1200) | ||
# pragma once | ||
#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) | ||
|
||
#include "asio/detail/config.hpp" | ||
#include "asio/detail/timer_queue_base.hpp" | ||
|
||
#include "asio/detail/push_options.hpp" | ||
|
||
namespace asio { | ||
namespace detail { | ||
|
||
class timer_queue_set | ||
{ | ||
public: | ||
// Constructor. | ||
ASIO_DECL timer_queue_set(); | ||
|
||
// Add a timer queue to the set. | ||
ASIO_DECL void insert(timer_queue_base* q); | ||
|
||
// Remove a timer queue from the set. | ||
ASIO_DECL void erase(timer_queue_base* q); | ||
|
||
// Determine whether all queues are empty. | ||
ASIO_DECL bool all_empty() const; | ||
|
||
// Get the wait duration in milliseconds. | ||
ASIO_DECL long wait_duration_msec(long max_duration) const; | ||
|
||
// Get the wait duration in microseconds. | ||
ASIO_DECL long wait_duration_usec(long max_duration) const; | ||
|
||
// Dequeue all ready timers. | ||
ASIO_DECL void get_ready_timers(op_queue<operation>& ops); | ||
|
||
// Dequeue all timers. | ||
ASIO_DECL void get_all_timers(op_queue<operation>& ops); | ||
|
||
private: | ||
timer_queue_base* first_; | ||
}; | ||
|
||
} // namespace detail | ||
} // namespace asio | ||
|
||
#include "asio/detail/pop_options.hpp" | ||
|
||
#if defined(ASIO_HEADER_ONLY) | ||
# include "asio/detail/impl/timer_queue_set.ipp" | ||
#endif // defined(ASIO_HEADER_ONLY) | ||
|
||
#endif // ASIO_DETAIL_TIMER_QUEUE_SET_HPP |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
// | ||
// detail/timer_scheduler.hpp | ||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
// | ||
// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) | ||
// | ||
// 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 ASIO_DETAIL_TIMER_SCHEDULER_HPP | ||
#define ASIO_DETAIL_TIMER_SCHEDULER_HPP | ||
|
||
#if defined(_MSC_VER) && (_MSC_VER >= 1200) | ||
# pragma once | ||
#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) | ||
|
||
#include "asio/detail/config.hpp" | ||
#include "asio/detail/timer_scheduler_fwd.hpp" | ||
|
||
#if defined(ASIO_WINDOWS_RUNTIME) | ||
# include "asio/detail/winrt_timer_scheduler.hpp" | ||
#elif defined(ASIO_HAS_IOCP) | ||
# include "asio/detail/win_iocp_io_context.hpp" | ||
#elif defined(ASIO_HAS_EPOLL) | ||
# include "asio/detail/epoll_reactor.hpp" | ||
#elif defined(ASIO_HAS_KQUEUE) | ||
# include "asio/detail/kqueue_reactor.hpp" | ||
#elif defined(ASIO_HAS_DEV_POLL) | ||
# include "asio/detail/dev_poll_reactor.hpp" | ||
#else | ||
# include "asio/detail/select_reactor.hpp" | ||
#endif | ||
|
||
#endif // ASIO_DETAIL_TIMER_SCHEDULER_HPP |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
// | ||
// detail/timer_scheduler_fwd.hpp | ||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
// | ||
// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) | ||
// | ||
// 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 ASIO_DETAIL_TIMER_SCHEDULER_FWD_HPP | ||
#define ASIO_DETAIL_TIMER_SCHEDULER_FWD_HPP | ||
|
||
#if defined(_MSC_VER) && (_MSC_VER >= 1200) | ||
# pragma once | ||
#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) | ||
|
||
#include "asio/detail/config.hpp" | ||
|
||
namespace asio { | ||
namespace detail { | ||
|
||
#if defined(ASIO_WINDOWS_RUNTIME) | ||
typedef class winrt_timer_scheduler timer_scheduler; | ||
#elif defined(ASIO_HAS_IOCP) | ||
typedef class win_iocp_io_context timer_scheduler; | ||
#elif defined(ASIO_HAS_EPOLL) | ||
typedef class epoll_reactor timer_scheduler; | ||
#elif defined(ASIO_HAS_KQUEUE) | ||
typedef class kqueue_reactor timer_scheduler; | ||
#elif defined(ASIO_HAS_DEV_POLL) | ||
typedef class dev_poll_reactor timer_scheduler; | ||
#else | ||
typedef class select_reactor timer_scheduler; | ||
#endif | ||
|
||
} // namespace detail | ||
} // namespace asio | ||
|
||
#endif // ASIO_DETAIL_TIMER_SCHEDULER_FWD_HPP |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
// | ||
// detail/tss_ptr.hpp | ||
// ~~~~~~~~~~~~~~~~~~ | ||
// | ||
// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) | ||
// | ||
// 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 ASIO_DETAIL_TSS_PTR_HPP | ||
#define ASIO_DETAIL_TSS_PTR_HPP | ||
|
||
#if defined(_MSC_VER) && (_MSC_VER >= 1200) | ||
# pragma once | ||
#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) | ||
|
||
#include "asio/detail/config.hpp" | ||
|
||
#if !defined(ASIO_HAS_THREADS) | ||
# include "asio/detail/null_tss_ptr.hpp" | ||
#elif defined(ASIO_HAS_THREAD_KEYWORD_EXTENSION) | ||
# include "asio/detail/keyword_tss_ptr.hpp" | ||
#elif defined(ASIO_WINDOWS) | ||
# include "asio/detail/win_tss_ptr.hpp" | ||
#elif defined(ASIO_HAS_PTHREADS) | ||
# include "asio/detail/posix_tss_ptr.hpp" | ||
#else | ||
# error Only Windows and POSIX are supported! | ||
#endif | ||
|
||
#include "asio/detail/push_options.hpp" | ||
|
||
namespace asio { | ||
namespace detail { | ||
|
||
template <typename T> | ||
class tss_ptr | ||
#if !defined(ASIO_HAS_THREADS) | ||
: public null_tss_ptr<T> | ||
#elif defined(ASIO_HAS_THREAD_KEYWORD_EXTENSION) | ||
: public keyword_tss_ptr<T> | ||
#elif defined(ASIO_WINDOWS) | ||
: public win_tss_ptr<T> | ||
#elif defined(ASIO_HAS_PTHREADS) | ||
: public posix_tss_ptr<T> | ||
#endif | ||
{ | ||
public: | ||
void operator=(T* value) | ||
{ | ||
#if !defined(ASIO_HAS_THREADS) | ||
null_tss_ptr<T>::operator=(value); | ||
#elif defined(ASIO_HAS_THREAD_KEYWORD_EXTENSION) | ||
keyword_tss_ptr<T>::operator=(value); | ||
#elif defined(ASIO_WINDOWS) | ||
win_tss_ptr<T>::operator=(value); | ||
#elif defined(ASIO_HAS_PTHREADS) | ||
posix_tss_ptr<T>::operator=(value); | ||
#endif | ||
} | ||
}; | ||
|
||
} // namespace detail | ||
} // namespace asio | ||
|
||
#include "asio/detail/pop_options.hpp" | ||
|
||
#endif // ASIO_DETAIL_TSS_PTR_HPP |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,148 @@ | ||
// | ||
// detail/type_traits.hpp | ||
// ~~~~~~~~~~~~~~~~~~~~~~ | ||
// | ||
// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) | ||
// | ||
// 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 ASIO_DETAIL_TYPE_TRAITS_HPP | ||
#define ASIO_DETAIL_TYPE_TRAITS_HPP | ||
|
||
#if defined(_MSC_VER) && (_MSC_VER >= 1200) | ||
# pragma once | ||
#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) | ||
|
||
#include "asio/detail/config.hpp" | ||
|
||
#if defined(ASIO_HAS_STD_TYPE_TRAITS) | ||
# include <type_traits> | ||
#else // defined(ASIO_HAS_STD_TYPE_TRAITS) | ||
# include <boost/type_traits/add_const.hpp> | ||
# include <boost/type_traits/add_lvalue_reference.hpp> | ||
# include <boost/type_traits/aligned_storage.hpp> | ||
# include <boost/type_traits/alignment_of.hpp> | ||
# include <boost/type_traits/conditional.hpp> | ||
# include <boost/type_traits/decay.hpp> | ||
# include <boost/type_traits/has_nothrow_copy.hpp> | ||
# include <boost/type_traits/has_nothrow_destructor.hpp> | ||
# include <boost/type_traits/integral_constant.hpp> | ||
# include <boost/type_traits/is_base_of.hpp> | ||
# include <boost/type_traits/is_class.hpp> | ||
# include <boost/type_traits/is_const.hpp> | ||
# include <boost/type_traits/is_convertible.hpp> | ||
# include <boost/type_traits/is_constructible.hpp> | ||
# include <boost/type_traits/is_copy_constructible.hpp> | ||
# include <boost/type_traits/is_destructible.hpp> | ||
# include <boost/type_traits/is_function.hpp> | ||
# include <boost/type_traits/is_object.hpp> | ||
# include <boost/type_traits/is_same.hpp> | ||
# include <boost/type_traits/remove_cv.hpp> | ||
# include <boost/type_traits/remove_pointer.hpp> | ||
# include <boost/type_traits/remove_reference.hpp> | ||
# include <boost/utility/declval.hpp> | ||
# include <boost/utility/enable_if.hpp> | ||
# include <boost/utility/result_of.hpp> | ||
#endif // defined(ASIO_HAS_STD_TYPE_TRAITS) | ||
|
||
namespace asio { | ||
|
||
#if defined(ASIO_HAS_STD_TYPE_TRAITS) | ||
using std::add_const; | ||
using std::add_lvalue_reference; | ||
using std::aligned_storage; | ||
using std::alignment_of; | ||
using std::conditional; | ||
using std::decay; | ||
using std::declval; | ||
using std::enable_if; | ||
using std::false_type; | ||
using std::integral_constant; | ||
using std::is_base_of; | ||
using std::is_class; | ||
using std::is_const; | ||
using std::is_constructible; | ||
using std::is_convertible; | ||
using std::is_copy_constructible; | ||
using std::is_destructible; | ||
using std::is_function; | ||
using std::is_move_constructible; | ||
using std::is_nothrow_copy_constructible; | ||
using std::is_nothrow_destructible; | ||
using std::is_object; | ||
using std::is_reference; | ||
using std::is_same; | ||
using std::is_scalar; | ||
using std::remove_cv; | ||
template <typename T> | ||
struct remove_cvref : remove_cv<typename std::remove_reference<T>::type> {}; | ||
using std::remove_pointer; | ||
using std::remove_reference; | ||
#if defined(ASIO_HAS_STD_INVOKE_RESULT) | ||
template <typename> struct result_of; | ||
template <typename F, typename... Args> | ||
struct result_of<F(Args...)> : std::invoke_result<F, Args...> {}; | ||
#else // defined(ASIO_HAS_STD_INVOKE_RESULT) | ||
using std::result_of; | ||
#endif // defined(ASIO_HAS_STD_INVOKE_RESULT) | ||
using std::true_type; | ||
#else // defined(ASIO_HAS_STD_TYPE_TRAITS) | ||
using boost::add_const; | ||
using boost::add_lvalue_reference; | ||
using boost::aligned_storage; | ||
using boost::alignment_of; | ||
template <bool Condition, typename Type = void> | ||
struct enable_if : boost::enable_if_c<Condition, Type> {}; | ||
using boost::conditional; | ||
using boost::decay; | ||
using boost::declval; | ||
using boost::false_type; | ||
using boost::integral_constant; | ||
using boost::is_base_of; | ||
using boost::is_class; | ||
using boost::is_const; | ||
using boost::is_constructible; | ||
using boost::is_convertible; | ||
using boost::is_copy_constructible; | ||
using boost::is_destructible; | ||
using boost::is_function; | ||
#if defined(ASIO_HAS_MOVE) | ||
template <typename T> | ||
struct is_move_constructible : false_type {}; | ||
#else // defined(ASIO_HAS_MOVE) | ||
template <typename T> | ||
struct is_move_constructible : is_copy_constructible<T> {}; | ||
#endif // defined(ASIO_HAS_MOVE) | ||
template <typename T> | ||
struct is_nothrow_copy_constructible : boost::has_nothrow_copy<T> {}; | ||
template <typename T> | ||
struct is_nothrow_destructible : boost::has_nothrow_destructor<T> {}; | ||
using boost::is_object; | ||
using boost::is_reference; | ||
using boost::is_same; | ||
using boost::is_scalar; | ||
using boost::remove_cv; | ||
template <typename T> | ||
struct remove_cvref : remove_cv<typename boost::remove_reference<T>::type> {}; | ||
using boost::remove_pointer; | ||
using boost::remove_reference; | ||
using boost::result_of; | ||
using boost::true_type; | ||
#endif // defined(ASIO_HAS_STD_TYPE_TRAITS) | ||
|
||
template <typename> struct void_type { typedef void type; }; | ||
|
||
#if defined(ASIO_HAS_VARIADIC_TEMPLATES) | ||
|
||
template <typename...> struct conjunction : true_type {}; | ||
template <typename T> struct conjunction<T> : T {}; | ||
template <typename Head, typename... Tail> struct conjunction<Head, Tail...> : | ||
conditional<Head::value, conjunction<Tail...>, Head>::type {}; | ||
|
||
#endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) | ||
|
||
} // namespace asio | ||
|
||
#endif // ASIO_DETAIL_TYPE_TRAITS_HPP |
Oops, something went wrong.