/usr/include/boost/asio/detail/impl
NameSizeModeActions
buffer_sequence_adapter.ipp30960644editdlrm
descriptor_ops.ipp150910644editdlrm
dev_poll_reactor.hpp25870644editdlrm
dev_poll_reactor.ipp131380644editdlrm
epoll_reactor.hpp24390644editdlrm
epoll_reactor.ipp223720644editdlrm
eventfd_select_interrupter.ipp45980644editdlrm
handler_tracking.ipp117820644editdlrm
kqueue_reactor.hpp25900644editdlrm
kqueue_reactor.ipp170450644editdlrm
null_event.ipp19060644editdlrm
pipe_select_interrupter.ipp31760644editdlrm
posix_event.ipp17760644editdlrm
posix_mutex.ipp12350644editdlrm
posix_thread.ipp19640644editdlrm
posix_tss_ptr.ipp12610644editdlrm
reactive_descriptor_service.ipp63880644editdlrm
reactive_serial_port_service.ipp42780644editdlrm
reactive_socket_service_base.ipp88020644editdlrm
resolver_service_base.ipp38910644editdlrm
scheduler.ipp158920644editdlrm
select_reactor.hpp29850644editdlrm
select_reactor.ipp93520644editdlrm
service_registry.hpp26520644editdlrm
service_registry.ipp54620644editdlrm
signal_set_service.ipp203760644editdlrm
socket_ops.ipp1137980644editdlrm
socket_select_interrupter.ipp58580644editdlrm
strand_executor_service.hpp115700644editdlrm
strand_executor_service.ipp36370644editdlrm
strand_service.hpp35740644editdlrm
strand_service.ipp50370644editdlrm
throw_error.ipp12680644editdlrm
timer_queue_ptime.ipp24100644editdlrm
timer_queue_set.ipp23170644editdlrm
winrt_ssocket_service_base.ipp175130644editdlrm
winrt_timer_scheduler.hpp26640644editdlrm
winrt_timer_scheduler.ipp29620644editdlrm
winsock_init.ipp20500644editdlrm
win_event.ipp20680644editdlrm
win_iocp_handle_service.ipp143940644editdlrm
win_iocp_io_context.hpp30260644editdlrm
win_iocp_io_context.ipp166340644editdlrm
win_iocp_serial_port_service.ipp60210644editdlrm
win_iocp_socket_service_base.ipp250410644editdlrm
win_mutex.ipp22130644editdlrm
win_object_handle_service.ipp124950644editdlrm
win_static_mutex.ipp36360644editdlrm
win_thread.ipp41020644editdlrm
win_tss_ptr.ipp14480644editdlrm
Edit: /usr/include/boost/asio/detail/impl/resolver_service_base.ipp (3891B)
// // detail/impl/resolver_service_base.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // 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 BOOST_ASIO_DETAIL_IMPL_RESOLVER_SERVICE_BASE_IPP #define BOOST_ASIO_DETAIL_IMPL_RESOLVER_SERVICE_BASE_IPP #if defined(_MSC_VER) && (_MSC_VER >= 1200) # pragma once #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) #include #include #include namespace boost { namespace asio { namespace detail { class resolver_service_base::work_scheduler_runner { public: work_scheduler_runner(scheduler_impl& work_scheduler) : work_scheduler_(work_scheduler) { } void operator()() { boost::system::error_code ec; work_scheduler_.run(ec); } private: scheduler_impl& work_scheduler_; }; resolver_service_base::resolver_service_base(execution_context& context) : scheduler_(boost::asio::use_service(context)), work_scheduler_(new scheduler_impl(context, -1, false)), work_thread_(0) { work_scheduler_->work_started(); } resolver_service_base::~resolver_service_base() { base_shutdown(); } void resolver_service_base::base_shutdown() { if (work_scheduler_.get()) { work_scheduler_->work_finished(); work_scheduler_->stop(); if (work_thread_.get()) { work_thread_->join(); work_thread_.reset(); } work_scheduler_.reset(); } } void resolver_service_base::base_notify_fork( execution_context::fork_event fork_ev) { if (work_thread_.get()) { if (fork_ev == execution_context::fork_prepare) { work_scheduler_->stop(); work_thread_->join(); work_thread_.reset(); } } else if (fork_ev != execution_context::fork_prepare) { work_scheduler_->restart(); } } void resolver_service_base::construct( resolver_service_base::implementation_type& impl) { impl.reset(static_cast(0), socket_ops::noop_deleter()); } void resolver_service_base::destroy( resolver_service_base::implementation_type& impl) { BOOST_ASIO_HANDLER_OPERATION((scheduler_.context(), "resolver", &impl, 0, "cancel")); impl.reset(); } void resolver_service_base::move_construct(implementation_type& impl, implementation_type& other_impl) { impl = BOOST_ASIO_MOVE_CAST(implementation_type)(other_impl); } void resolver_service_base::move_assign(implementation_type& impl, resolver_service_base&, implementation_type& other_impl) { destroy(impl); impl = BOOST_ASIO_MOVE_CAST(implementation_type)(other_impl); } void resolver_service_base::cancel( resolver_service_base::implementation_type& impl) { BOOST_ASIO_HANDLER_OPERATION((scheduler_.context(), "resolver", &impl, 0, "cancel")); impl.reset(static_cast(0), socket_ops::noop_deleter()); } void resolver_service_base::start_resolve_op(resolve_op* op) { if (BOOST_ASIO_CONCURRENCY_HINT_IS_LOCKING(SCHEDULER, scheduler_.concurrency_hint())) { start_work_thread(); scheduler_.work_started(); work_scheduler_->post_immediate_completion(op, false); } else { op->ec_ = boost::asio::error::operation_not_supported; scheduler_.post_immediate_completion(op, false); } } void resolver_service_base::start_work_thread() { boost::asio::detail::mutex::scoped_lock lock(mutex_); if (!work_thread_.get()) { work_thread_.reset(new boost::asio::detail::thread( work_scheduler_runner(*work_scheduler_))); } } } // namespace detail } // namespace asio } // namespace boost #include #endif // BOOST_ASIO_DETAIL_IMPL_RESOLVER_SERVICE_BASE_IPP