Chris@16: // Chris@16: // impl/io_service.ipp Chris@16: // ~~~~~~~~~~~~~~~~~~~ Chris@16: // Chris@101: // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com) Chris@16: // Chris@16: // Distributed under the Boost Software License, Version 1.0. (See accompanying Chris@16: // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: // Chris@16: Chris@16: #ifndef BOOST_ASIO_IMPL_IO_SERVICE_IPP Chris@16: #define BOOST_ASIO_IMPL_IO_SERVICE_IPP Chris@16: Chris@16: #if defined(_MSC_VER) && (_MSC_VER >= 1200) Chris@16: # pragma once Chris@16: #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) Chris@16: Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: Chris@16: #if defined(BOOST_ASIO_HAS_IOCP) Chris@16: # include Chris@16: #else Chris@16: # include Chris@16: #endif Chris@16: Chris@16: #include Chris@16: Chris@16: namespace boost { Chris@16: namespace asio { Chris@16: Chris@16: io_service::io_service() Chris@16: : service_registry_(new boost::asio::detail::service_registry( Chris@16: *this, static_cast(0), Chris@16: (std::numeric_limits::max)())), Chris@16: impl_(service_registry_->first_service()) Chris@16: { Chris@16: } Chris@16: Chris@16: io_service::io_service(std::size_t concurrency_hint) Chris@16: : service_registry_(new boost::asio::detail::service_registry( Chris@16: *this, static_cast(0), concurrency_hint)), Chris@16: impl_(service_registry_->first_service()) Chris@16: { Chris@16: } Chris@16: Chris@16: io_service::~io_service() Chris@16: { Chris@16: delete service_registry_; Chris@16: } Chris@16: Chris@16: std::size_t io_service::run() Chris@16: { Chris@16: boost::system::error_code ec; Chris@16: std::size_t s = impl_.run(ec); Chris@16: boost::asio::detail::throw_error(ec); Chris@16: return s; Chris@16: } Chris@16: Chris@16: std::size_t io_service::run(boost::system::error_code& ec) Chris@16: { Chris@16: return impl_.run(ec); Chris@16: } Chris@16: Chris@16: std::size_t io_service::run_one() Chris@16: { Chris@16: boost::system::error_code ec; Chris@16: std::size_t s = impl_.run_one(ec); Chris@16: boost::asio::detail::throw_error(ec); Chris@16: return s; Chris@16: } Chris@16: Chris@16: std::size_t io_service::run_one(boost::system::error_code& ec) Chris@16: { Chris@16: return impl_.run_one(ec); Chris@16: } Chris@16: Chris@16: std::size_t io_service::poll() Chris@16: { Chris@16: boost::system::error_code ec; Chris@16: std::size_t s = impl_.poll(ec); Chris@16: boost::asio::detail::throw_error(ec); Chris@16: return s; Chris@16: } Chris@16: Chris@16: std::size_t io_service::poll(boost::system::error_code& ec) Chris@16: { Chris@16: return impl_.poll(ec); Chris@16: } Chris@16: Chris@16: std::size_t io_service::poll_one() Chris@16: { Chris@16: boost::system::error_code ec; Chris@16: std::size_t s = impl_.poll_one(ec); Chris@16: boost::asio::detail::throw_error(ec); Chris@16: return s; Chris@16: } Chris@16: Chris@16: std::size_t io_service::poll_one(boost::system::error_code& ec) Chris@16: { Chris@16: return impl_.poll_one(ec); Chris@16: } Chris@16: Chris@16: void io_service::stop() Chris@16: { Chris@16: impl_.stop(); Chris@16: } Chris@16: Chris@16: bool io_service::stopped() const Chris@16: { Chris@16: return impl_.stopped(); Chris@16: } Chris@16: Chris@16: void io_service::reset() Chris@16: { Chris@16: impl_.reset(); Chris@16: } Chris@16: Chris@16: void io_service::notify_fork(boost::asio::io_service::fork_event event) Chris@16: { Chris@16: service_registry_->notify_fork(event); Chris@16: } Chris@16: Chris@16: io_service::service::service(boost::asio::io_service& owner) Chris@16: : owner_(owner), Chris@16: next_(0) Chris@16: { Chris@16: } Chris@16: Chris@16: io_service::service::~service() Chris@16: { Chris@16: } Chris@16: Chris@16: void io_service::service::fork_service(boost::asio::io_service::fork_event) Chris@16: { Chris@16: } Chris@16: Chris@16: service_already_exists::service_already_exists() Chris@16: : std::logic_error("Service already exists.") Chris@16: { Chris@16: } Chris@16: Chris@16: invalid_service_owner::invalid_service_owner() Chris@16: : std::logic_error("Invalid service owner.") Chris@16: { Chris@16: } Chris@16: Chris@16: } // namespace asio Chris@16: } // namespace boost Chris@16: Chris@16: #include Chris@16: Chris@16: #endif // BOOST_ASIO_IMPL_IO_SERVICE_IPP