⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 io_service.ipp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 IPP
字号:
//// io_service.ipp// ~~~~~~~~~~~~~~//// Copyright (c) 2003-2008 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_IO_SERVICE_IPP#define BOOST_ASIO_IO_SERVICE_IPP#if defined(_MSC_VER) && (_MSC_VER >= 1200)# pragma once#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)#include <boost/asio/detail/push_options.hpp>#include <boost/asio/detail/push_options.hpp>#include <limits>#include <boost/asio/detail/pop_options.hpp>#include <boost/asio/detail/dev_poll_reactor.hpp>#include <boost/asio/detail/epoll_reactor.hpp>#include <boost/asio/detail/kqueue_reactor.hpp>#include <boost/asio/detail/select_reactor.hpp>#include <boost/asio/detail/service_registry.hpp>#include <boost/asio/detail/task_io_service.hpp>#include <boost/asio/detail/throw_error.hpp>#include <boost/asio/detail/win_iocp_io_service.hpp>namespace boost {namespace asio {inline io_service::io_service()  : service_registry_(new boost::asio::detail::service_registry(*this)),    impl_(service_registry_->use_service<impl_type>()){  impl_.init((std::numeric_limits<std::size_t>::max)());}inline io_service::io_service(std::size_t concurrency_hint)  : service_registry_(new boost::asio::detail::service_registry(*this)),    impl_(service_registry_->use_service<impl_type>()){  impl_.init(concurrency_hint);}inline io_service::~io_service(){  delete service_registry_;}inline std::size_t io_service::run(){  boost::system::error_code ec;  std::size_t s = impl_.run(ec);  boost::asio::detail::throw_error(ec);  return s;}inline std::size_t io_service::run(boost::system::error_code& ec){  return impl_.run(ec);}inline std::size_t io_service::run_one(){  boost::system::error_code ec;  std::size_t s = impl_.run_one(ec);  boost::asio::detail::throw_error(ec);  return s;}inline std::size_t io_service::run_one(boost::system::error_code& ec){  return impl_.run_one(ec);}inline std::size_t io_service::poll(){  boost::system::error_code ec;  std::size_t s = impl_.poll(ec);  boost::asio::detail::throw_error(ec);  return s;}inline std::size_t io_service::poll(boost::system::error_code& ec){  return impl_.poll(ec);}inline std::size_t io_service::poll_one(){  boost::system::error_code ec;  std::size_t s = impl_.poll_one(ec);  boost::asio::detail::throw_error(ec);  return s;}inline std::size_t io_service::poll_one(boost::system::error_code& ec){  return impl_.poll_one(ec);}inline void io_service::stop(){  impl_.stop();}inline void io_service::reset(){  impl_.reset();}template <typename Handler>inline void io_service::dispatch(Handler handler){  impl_.dispatch(handler);}template <typename Handler>inline void io_service::post(Handler handler){  impl_.post(handler);}template <typename Handler>#if defined(GENERATING_DOCUMENTATION)unspecified#elseinline detail::wrapped_handler<io_service&, Handler>#endifio_service::wrap(Handler handler){  return detail::wrapped_handler<io_service&, Handler>(*this, handler);}inline io_service::work::work(boost::asio::io_service& io_service)  : io_service_(io_service){  io_service_.impl_.work_started();}inline io_service::work::work(const work& other)  : io_service_(other.io_service_){  io_service_.impl_.work_started();}inline io_service::work::~work(){  io_service_.impl_.work_finished();}inline boost::asio::io_service& io_service::work::io_service(){  return io_service_;}inline boost::asio::io_service& io_service::work::get_io_service(){  return io_service_;}inline io_service::service::service(boost::asio::io_service& owner)  : owner_(owner),    type_info_(0),    next_(0){}inline io_service::service::~service(){}inline boost::asio::io_service& io_service::service::io_service(){  return owner_;}inline boost::asio::io_service& io_service::service::get_io_service(){  return owner_;}template <typename Service>inline Service& use_service(io_service& ios){  // Check that Service meets the necessary type requirements.  (void)static_cast<io_service::service*>(static_cast<Service*>(0));  (void)static_cast<const io_service::id*>(&Service::id);  return ios.service_registry_->template use_service<Service>();}template <typename Service>void add_service(io_service& ios, Service* svc){  // Check that Service meets the necessary type requirements.  (void)static_cast<io_service::service*>(static_cast<Service*>(0));  (void)static_cast<const io_service::id*>(&Service::id);  if (&ios != &svc->io_service())    boost::throw_exception(invalid_service_owner());  if (!ios.service_registry_->template add_service<Service>(svc))    boost::throw_exception(service_already_exists());}template <typename Service>bool has_service(io_service& ios){  // Check that Service meets the necessary type requirements.  (void)static_cast<io_service::service*>(static_cast<Service*>(0));  (void)static_cast<const io_service::id*>(&Service::id);  return ios.service_registry_->template has_service<Service>();}} // namespace asio} // namespace boost#include <boost/asio/detail/pop_options.hpp>#endif // BOOST_ASIO_IO_SERVICE_IPP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -