#include <select_reactor.hpp>

Public Member Functions | |
| select_reactor (asio::io_service &io_service) | |
| ~select_reactor () | |
| void | shutdown_service () |
| Destroy all user-defined handler objects owned by the service. | |
| int | register_descriptor (socket_type descriptor) |
| template<typename Handler> | |
| void | start_read_op (socket_type descriptor, Handler handler) |
| template<typename Handler> | |
| void | start_write_op (socket_type descriptor, Handler handler) |
| template<typename Handler> | |
| void | start_except_op (socket_type descriptor, Handler handler) |
| template<typename Handler> | |
| void | start_write_and_except_ops (socket_type descriptor, Handler handler) |
| void | cancel_ops (socket_type descriptor) |
| void | enqueue_cancel_ops_unlocked (socket_type descriptor) |
| void | close_descriptor (socket_type descriptor) |
| template<typename Time_Traits> | |
| void | add_timer_queue (timer_queue< Time_Traits > &timer_queue) |
| template<typename Time_Traits> | |
| void | remove_timer_queue (timer_queue< Time_Traits > &timer_queue) |
| template<typename Time_Traits, typename Handler> | |
| void | schedule_timer (timer_queue< Time_Traits > &timer_queue, const typename Time_Traits::time_type &time, Handler handler, void *token) |
| template<typename Time_Traits> | |
| std::size_t | cancel_timer (timer_queue< Time_Traits > &timer_queue, void *token) |
Private Member Functions | |
| void | run (bool block) |
| void | run_thread () |
| void | interrupt () |
| bool | all_timer_queues_are_empty () const |
| timeval * | get_timeout (timeval &tv) |
| void | cancel_ops_unlocked (socket_type descriptor) |
Static Private Member Functions | |
| static void | call_run_thread (select_reactor *reactor) |
Private Attributes | |
| asio::detail::mutex | mutex_ |
| bool | select_in_progress_ |
| select_interrupter | interrupter_ |
| reactor_op_queue< socket_type > | read_op_queue_ |
| reactor_op_queue< socket_type > | write_op_queue_ |
| reactor_op_queue< socket_type > | except_op_queue_ |
| std::vector< timer_queue_base * > | timer_queues_ |
| std::vector< socket_type > | pending_cancellations_ |
| bool | stop_thread_ |
| asio::detail::thread * | thread_ |
| bool | shutdown_ |
Friends | |
| class | task_io_service< select_reactor< Own_Thread > > |
Definition at line 49 of file select_reactor.hpp.
| asio::detail::select_reactor< Own_Thread >::select_reactor | ( | asio::io_service & | io_service | ) | [inline] |
Definition at line 54 of file select_reactor.hpp.
References asio::detail::bind_handler(), asio::detail::select_reactor< Own_Thread >::call_run_thread(), and asio::detail::select_reactor< Own_Thread >::thread_.
| asio::detail::select_reactor< Own_Thread >::~select_reactor | ( | ) | [inline] |
Definition at line 77 of file select_reactor.hpp.
References asio::detail::select_reactor< Own_Thread >::shutdown_service().
| void asio::detail::select_reactor< Own_Thread >::shutdown_service | ( | ) | [inline, virtual] |
Destroy all user-defined handler objects owned by the service.
Implements asio::io_service::service.
Definition at line 83 of file select_reactor.hpp.
References asio::detail::select_reactor< Own_Thread >::except_op_queue_, asio::detail::pipe_select_interrupter::interrupt(), asio::detail::select_reactor< Own_Thread >::interrupter_, asio::detail::null_thread::join(), asio::detail::select_reactor< Own_Thread >::mutex_, asio::detail::select_reactor< Own_Thread >::read_op_queue_, asio::detail::select_reactor< Own_Thread >::shutdown_, asio::detail::select_reactor< Own_Thread >::stop_thread_, asio::detail::select_reactor< Own_Thread >::thread_, asio::detail::select_reactor< Own_Thread >::timer_queues_, asio::detail::scoped_lock< Mutex >::unlock(), and asio::detail::select_reactor< Own_Thread >::write_op_queue_.
Referenced by asio::detail::select_reactor< Own_Thread >::~select_reactor().
| int asio::detail::select_reactor< Own_Thread >::register_descriptor | ( | socket_type | descriptor | ) | [inline] |
Definition at line 109 of file select_reactor.hpp.
| void asio::detail::select_reactor< Own_Thread >::start_read_op | ( | socket_type | descriptor, | |
| Handler | handler | |||
| ) | [inline] |
Definition at line 117 of file select_reactor.hpp.
References asio::detail::pipe_select_interrupter::interrupt(), asio::detail::select_reactor< Own_Thread >::interrupter_, asio::detail::select_reactor< Own_Thread >::mutex_, asio::detail::select_reactor< Own_Thread >::read_op_queue_, and asio::detail::select_reactor< Own_Thread >::shutdown_.
| void asio::detail::select_reactor< Own_Thread >::start_write_op | ( | socket_type | descriptor, | |
| Handler | handler | |||
| ) | [inline] |
Definition at line 128 of file select_reactor.hpp.
References asio::detail::pipe_select_interrupter::interrupt(), asio::detail::select_reactor< Own_Thread >::interrupter_, asio::detail::select_reactor< Own_Thread >::mutex_, asio::detail::select_reactor< Own_Thread >::shutdown_, and asio::detail::select_reactor< Own_Thread >::write_op_queue_.
| void asio::detail::select_reactor< Own_Thread >::start_except_op | ( | socket_type | descriptor, | |
| Handler | handler | |||
| ) | [inline] |
Definition at line 139 of file select_reactor.hpp.
References asio::detail::select_reactor< Own_Thread >::except_op_queue_, asio::detail::pipe_select_interrupter::interrupt(), asio::detail::select_reactor< Own_Thread >::interrupter_, asio::detail::select_reactor< Own_Thread >::mutex_, and asio::detail::select_reactor< Own_Thread >::shutdown_.
| void asio::detail::select_reactor< Own_Thread >::start_write_and_except_ops | ( | socket_type | descriptor, | |
| Handler | handler | |||
| ) | [inline] |
Definition at line 151 of file select_reactor.hpp.
References asio::detail::select_reactor< Own_Thread >::except_op_queue_, asio::detail::pipe_select_interrupter::interrupt(), asio::detail::select_reactor< Own_Thread >::interrupt(), asio::detail::select_reactor< Own_Thread >::interrupter_, asio::detail::select_reactor< Own_Thread >::mutex_, asio::detail::select_reactor< Own_Thread >::shutdown_, and asio::detail::select_reactor< Own_Thread >::write_op_queue_.
| void asio::detail::select_reactor< Own_Thread >::cancel_ops | ( | socket_type | descriptor | ) | [inline] |
Definition at line 167 of file select_reactor.hpp.
References asio::detail::select_reactor< Own_Thread >::cancel_ops_unlocked(), and asio::detail::select_reactor< Own_Thread >::mutex_.
| void asio::detail::select_reactor< Own_Thread >::enqueue_cancel_ops_unlocked | ( | socket_type | descriptor | ) | [inline] |
Definition at line 178 of file select_reactor.hpp.
References asio::detail::select_reactor< Own_Thread >::pending_cancellations_.
| void asio::detail::select_reactor< Own_Thread >::close_descriptor | ( | socket_type | descriptor | ) | [inline] |
Definition at line 185 of file select_reactor.hpp.
References asio::detail::select_reactor< Own_Thread >::cancel_ops_unlocked(), and asio::detail::select_reactor< Own_Thread >::mutex_.
| void asio::detail::select_reactor< Own_Thread >::add_timer_queue | ( | timer_queue< Time_Traits > & | timer_queue | ) | [inline] |
Definition at line 193 of file select_reactor.hpp.
References asio::detail::select_reactor< Own_Thread >::mutex_, and asio::detail::select_reactor< Own_Thread >::timer_queues_.
| void asio::detail::select_reactor< Own_Thread >::remove_timer_queue | ( | timer_queue< Time_Traits > & | timer_queue | ) | [inline] |
Definition at line 201 of file select_reactor.hpp.
References asio::detail::select_reactor< Own_Thread >::mutex_, and asio::detail::select_reactor< Own_Thread >::timer_queues_.
| void asio::detail::select_reactor< Own_Thread >::schedule_timer | ( | timer_queue< Time_Traits > & | timer_queue, | |
| const typename Time_Traits::time_type & | time, | |||
| Handler | handler, | |||
| void * | token | |||
| ) | [inline] |
Definition at line 217 of file select_reactor.hpp.
References asio::detail::timer_queue< Time_Traits >::enqueue_timer(), asio::detail::pipe_select_interrupter::interrupt(), asio::detail::select_reactor< Own_Thread >::interrupter_, asio::detail::select_reactor< Own_Thread >::mutex_, and asio::detail::select_reactor< Own_Thread >::shutdown_.
| std::size_t asio::detail::select_reactor< Own_Thread >::cancel_timer | ( | timer_queue< Time_Traits > & | timer_queue, | |
| void * | token | |||
| ) | [inline] |
Definition at line 229 of file select_reactor.hpp.
References asio::detail::timer_queue< Time_Traits >::cancel_timer(), and asio::detail::select_reactor< Own_Thread >::mutex_.
| void asio::detail::select_reactor< Own_Thread >::run | ( | bool | block | ) | [inline, private] |
Definition at line 239 of file select_reactor.hpp.
References asio::detail::select_reactor< Own_Thread >::all_timer_queues_are_empty(), asio::detail::select_reactor< Own_Thread >::cancel_ops_unlocked(), asio::detail::select_reactor< Own_Thread >::except_op_queue_, asio::detail::select_reactor< Own_Thread >::get_timeout(), asio::detail::select_reactor< Own_Thread >::interrupter_, asio::detail::posix_fd_set_adapter::is_set(), asio::detail::scoped_lock< Mutex >::lock(), asio::detail::posix_fd_set_adapter::max_descriptor(), asio::detail::select_reactor< Own_Thread >::mutex_, asio::detail::select_reactor< Own_Thread >::pending_cancellations_, asio::detail::pipe_select_interrupter::read_descriptor(), asio::detail::select_reactor< Own_Thread >::read_op_queue_, asio::detail::pipe_select_interrupter::reset(), asio::detail::socket_ops::select(), asio::detail::select_reactor< Own_Thread >::select_in_progress_, asio::detail::posix_fd_set_adapter::set(), asio::detail::select_reactor< Own_Thread >::stop_thread_, asio::detail::select_reactor< Own_Thread >::timer_queues_, asio::detail::scoped_lock< Mutex >::unlock(), and asio::detail::select_reactor< Own_Thread >::write_op_queue_.
Referenced by asio::detail::select_reactor< Own_Thread >::run_thread().
| void asio::detail::select_reactor< Own_Thread >::run_thread | ( | ) | [inline, private] |
Definition at line 340 of file select_reactor.hpp.
References asio::detail::scoped_lock< Mutex >::lock(), asio::detail::select_reactor< Own_Thread >::mutex_, asio::detail::select_reactor< Own_Thread >::run(), asio::detail::select_reactor< Own_Thread >::stop_thread_, and asio::detail::scoped_lock< Mutex >::unlock().
Referenced by asio::detail::select_reactor< Own_Thread >::call_run_thread().
| static void asio::detail::select_reactor< Own_Thread >::call_run_thread | ( | select_reactor< Own_Thread > * | reactor | ) | [inline, static, private] |
Definition at line 352 of file select_reactor.hpp.
References asio::detail::select_reactor< Own_Thread >::run_thread().
Referenced by asio::detail::select_reactor< Own_Thread >::select_reactor().
| void asio::detail::select_reactor< Own_Thread >::interrupt | ( | ) | [inline, private] |
Definition at line 358 of file select_reactor.hpp.
References asio::detail::pipe_select_interrupter::interrupt(), and asio::detail::select_reactor< Own_Thread >::interrupter_.
Referenced by asio::detail::select_reactor< Own_Thread >::cancel_ops_unlocked(), and asio::detail::select_reactor< Own_Thread >::start_write_and_except_ops().
| bool asio::detail::select_reactor< Own_Thread >::all_timer_queues_are_empty | ( | ) | const [inline, private] |
Definition at line 364 of file select_reactor.hpp.
References asio::detail::select_reactor< Own_Thread >::timer_queues_.
Referenced by asio::detail::select_reactor< Own_Thread >::get_timeout(), and asio::detail::select_reactor< Own_Thread >::run().
| timeval* asio::detail::select_reactor< Own_Thread >::get_timeout | ( | timeval & | tv | ) | [inline, private] |
Definition at line 373 of file select_reactor.hpp.
References asio::detail::select_reactor< Own_Thread >::all_timer_queues_are_empty(), asio::detail::select_reactor< Own_Thread >::timer_queues_, timeval::tv_sec, and timeval::tv_usec.
Referenced by asio::detail::select_reactor< Own_Thread >::run().
| void asio::detail::select_reactor< Own_Thread >::cancel_ops_unlocked | ( | socket_type | descriptor | ) | [inline, private] |
Definition at line 408 of file select_reactor.hpp.
References asio::detail::select_reactor< Own_Thread >::except_op_queue_, asio::detail::pipe_select_interrupter::interrupt(), asio::detail::select_reactor< Own_Thread >::interrupt(), asio::detail::select_reactor< Own_Thread >::interrupter_, asio::detail::select_reactor< Own_Thread >::read_op_queue_, and asio::detail::select_reactor< Own_Thread >::write_op_queue_.
Referenced by asio::detail::select_reactor< Own_Thread >::cancel_ops(), asio::detail::select_reactor< Own_Thread >::close_descriptor(), and asio::detail::select_reactor< Own_Thread >::run().
friend class task_io_service< select_reactor< Own_Thread > > [friend] |
Definition at line 236 of file select_reactor.hpp.
asio::detail::mutex asio::detail::select_reactor< Own_Thread >::mutex_ [private] |
Definition at line 418 of file select_reactor.hpp.
Referenced by asio::detail::select_reactor< Own_Thread >::add_timer_queue(), asio::detail::select_reactor< Own_Thread >::cancel_ops(), asio::detail::select_reactor< Own_Thread >::cancel_timer(), asio::detail::select_reactor< Own_Thread >::close_descriptor(), asio::detail::select_reactor< Own_Thread >::remove_timer_queue(), asio::detail::select_reactor< Own_Thread >::run(), asio::detail::select_reactor< Own_Thread >::run_thread(), asio::detail::select_reactor< Own_Thread >::schedule_timer(), asio::detail::select_reactor< Own_Thread >::shutdown_service(), asio::detail::select_reactor< Own_Thread >::start_except_op(), asio::detail::select_reactor< Own_Thread >::start_read_op(), asio::detail::select_reactor< Own_Thread >::start_write_and_except_ops(), and asio::detail::select_reactor< Own_Thread >::start_write_op().
bool asio::detail::select_reactor< Own_Thread >::select_in_progress_ [private] |
Definition at line 421 of file select_reactor.hpp.
Referenced by asio::detail::select_reactor< Own_Thread >::run().
select_interrupter asio::detail::select_reactor< Own_Thread >::interrupter_ [private] |
Definition at line 424 of file select_reactor.hpp.
Referenced by asio::detail::select_reactor< Own_Thread >::cancel_ops_unlocked(), asio::detail::select_reactor< Own_Thread >::interrupt(), asio::detail::select_reactor< Own_Thread >::run(), asio::detail::select_reactor< Own_Thread >::schedule_timer(), asio::detail::select_reactor< Own_Thread >::shutdown_service(), asio::detail::select_reactor< Own_Thread >::start_except_op(), asio::detail::select_reactor< Own_Thread >::start_read_op(), asio::detail::select_reactor< Own_Thread >::start_write_and_except_ops(), and asio::detail::select_reactor< Own_Thread >::start_write_op().
reactor_op_queue<socket_type> asio::detail::select_reactor< Own_Thread >::read_op_queue_ [private] |
Definition at line 427 of file select_reactor.hpp.
Referenced by asio::detail::select_reactor< Own_Thread >::cancel_ops_unlocked(), asio::detail::select_reactor< Own_Thread >::run(), asio::detail::select_reactor< Own_Thread >::shutdown_service(), and asio::detail::select_reactor< Own_Thread >::start_read_op().
reactor_op_queue<socket_type> asio::detail::select_reactor< Own_Thread >::write_op_queue_ [private] |
Definition at line 430 of file select_reactor.hpp.
Referenced by asio::detail::select_reactor< Own_Thread >::cancel_ops_unlocked(), asio::detail::select_reactor< Own_Thread >::run(), asio::detail::select_reactor< Own_Thread >::shutdown_service(), asio::detail::select_reactor< Own_Thread >::start_write_and_except_ops(), and asio::detail::select_reactor< Own_Thread >::start_write_op().
reactor_op_queue<socket_type> asio::detail::select_reactor< Own_Thread >::except_op_queue_ [private] |
Definition at line 433 of file select_reactor.hpp.
Referenced by asio::detail::select_reactor< Own_Thread >::cancel_ops_unlocked(), asio::detail::select_reactor< Own_Thread >::run(), asio::detail::select_reactor< Own_Thread >::shutdown_service(), asio::detail::select_reactor< Own_Thread >::start_except_op(), and asio::detail::select_reactor< Own_Thread >::start_write_and_except_ops().
std::vector<timer_queue_base*> asio::detail::select_reactor< Own_Thread >::timer_queues_ [private] |
Definition at line 436 of file select_reactor.hpp.
Referenced by asio::detail::select_reactor< Own_Thread >::add_timer_queue(), asio::detail::select_reactor< Own_Thread >::all_timer_queues_are_empty(), asio::detail::select_reactor< Own_Thread >::get_timeout(), asio::detail::select_reactor< Own_Thread >::remove_timer_queue(), asio::detail::select_reactor< Own_Thread >::run(), and asio::detail::select_reactor< Own_Thread >::shutdown_service().
std::vector<socket_type> asio::detail::select_reactor< Own_Thread >::pending_cancellations_ [private] |
Definition at line 439 of file select_reactor.hpp.
Referenced by asio::detail::select_reactor< Own_Thread >::enqueue_cancel_ops_unlocked(), and asio::detail::select_reactor< Own_Thread >::run().
bool asio::detail::select_reactor< Own_Thread >::stop_thread_ [private] |
Definition at line 442 of file select_reactor.hpp.
Referenced by asio::detail::select_reactor< Own_Thread >::run(), asio::detail::select_reactor< Own_Thread >::run_thread(), and asio::detail::select_reactor< Own_Thread >::shutdown_service().
asio::detail::thread* asio::detail::select_reactor< Own_Thread >::thread_ [private] |
Definition at line 445 of file select_reactor.hpp.
Referenced by asio::detail::select_reactor< Own_Thread >::select_reactor(), and asio::detail::select_reactor< Own_Thread >::shutdown_service().
bool asio::detail::select_reactor< Own_Thread >::shutdown_ [private] |
Definition at line 448 of file select_reactor.hpp.
Referenced by asio::detail::select_reactor< Own_Thread >::schedule_timer(), asio::detail::select_reactor< Own_Thread >::shutdown_service(), asio::detail::select_reactor< Own_Thread >::start_except_op(), asio::detail::select_reactor< Own_Thread >::start_read_op(), asio::detail::select_reactor< Own_Thread >::start_write_and_except_ops(), and asio::detail::select_reactor< Own_Thread >::start_write_op().
1.5.6