diff options
author | Remko Tronçon <git@el-tramo.be> | 2010-11-24 20:33:19 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2010-11-24 20:35:17 (GMT) |
commit | 332d60c56dfaa11fdd135088279d15cd5983b3d4 (patch) | |
tree | dd77717a4e1732da929d5ff8a0471fa3f005e201 /3rdParty/Boost/src/boost/asio/io_service.hpp | |
parent | 90c44a10fec26d2a0935b2d62e82b6a5be028373 (diff) | |
download | swift-contrib-332d60c56dfaa11fdd135088279d15cd5983b3d4.zip swift-contrib-332d60c56dfaa11fdd135088279d15cd5983b3d4.tar.bz2 |
Upgraded Boost to 1.45.0.
Diffstat (limited to '3rdParty/Boost/src/boost/asio/io_service.hpp')
-rw-r--r-- | 3rdParty/Boost/src/boost/asio/io_service.hpp | 103 |
1 files changed, 66 insertions, 37 deletions
diff --git a/3rdParty/Boost/src/boost/asio/io_service.hpp b/3rdParty/Boost/src/boost/asio/io_service.hpp index 3863e96..9350a84 100644 --- a/3rdParty/Boost/src/boost/asio/io_service.hpp +++ b/3rdParty/Boost/src/boost/asio/io_service.hpp @@ -15,25 +15,29 @@ # pragma once #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) -#include <boost/asio/detail/push_options.hpp> - -#include <boost/asio/detail/push_options.hpp> +#include <boost/asio/detail/config.hpp> #include <cstddef> #include <stdexcept> #include <typeinfo> -#include <boost/config.hpp> -#include <boost/throw_exception.hpp> -#include <boost/system/error_code.hpp> -#include <boost/asio/detail/pop_options.hpp> - #include <boost/asio/detail/noncopyable.hpp> -#include <boost/asio/detail/reactor_fwd.hpp> #include <boost/asio/detail/service_registry_fwd.hpp> -#include <boost/asio/detail/signal_init.hpp> -#include <boost/asio/detail/task_io_service_fwd.hpp> -#include <boost/asio/detail/win_iocp_io_service_fwd.hpp> -#include <boost/asio/detail/winsock_init.hpp> #include <boost/asio/detail/wrapped_handler.hpp> +#include <boost/system/error_code.hpp> + +#if defined(BOOST_ASIO_HAS_IOCP) +# include <boost/asio/detail/win_iocp_io_service_fwd.hpp> +#else +# include <boost/asio/detail/task_io_service_fwd.hpp> +#endif + +#if defined(BOOST_WINDOWS) || defined(__CYGWIN__) +# include <boost/asio/detail/winsock_init.hpp> +#elif defined(__sun) || defined(__QNX__) || defined(__hpux) || defined(_AIX) \ + || defined(__osf__) +# include <boost/asio/detail/signal_init.hpp> +#endif + +#include <boost/asio/detail/push_options.hpp> namespace boost { namespace asio { @@ -46,7 +50,7 @@ template <typename Service> bool has_service(io_service& ios); #if defined(BOOST_ASIO_HAS_IOCP) namespace detail { typedef win_iocp_io_service io_service_impl; } #else -namespace detail { typedef task_io_service<reactor> io_service_impl; } +namespace detail { typedef task_io_service io_service_impl; } #endif /// Provides core I/O functionality. @@ -197,7 +201,7 @@ public: class strand; /// Constructor. - io_service(); + BOOST_ASIO_DECL io_service(); /// Constructor. /** @@ -206,7 +210,7 @@ public: * @param concurrency_hint A suggestion to the implementation on how many * threads it should allow to run simultaneously. */ - explicit io_service(std::size_t concurrency_hint); + BOOST_ASIO_DECL explicit io_service(std::size_t concurrency_hint); /// Destructor. /** @@ -240,7 +244,7 @@ public: * destructor defined above destroys all handlers, causing all @c shared_ptr * references to all connection objects to be destroyed. */ - ~io_service(); + BOOST_ASIO_DECL ~io_service(); /// Run the io_service object's event processing loop. /** @@ -266,7 +270,7 @@ public: * The poll() function may also be used to dispatch ready handlers, but * without blocking. */ - std::size_t run(); + BOOST_ASIO_DECL std::size_t run(); /// Run the io_service object's event processing loop. /** @@ -292,7 +296,7 @@ public: * The poll() function may also be used to dispatch ready handlers, but * without blocking. */ - std::size_t run(boost::system::error_code& ec); + BOOST_ASIO_DECL std::size_t run(boost::system::error_code& ec); /// Run the io_service object's event processing loop to execute at most one /// handler. @@ -304,7 +308,7 @@ public: * * @throws boost::system::system_error Thrown on failure. */ - std::size_t run_one(); + BOOST_ASIO_DECL std::size_t run_one(); /// Run the io_service object's event processing loop to execute at most one /// handler. @@ -316,7 +320,7 @@ public: * * @return The number of handlers that were executed. */ - std::size_t run_one(boost::system::error_code& ec); + BOOST_ASIO_DECL std::size_t run_one(boost::system::error_code& ec); /// Run the io_service object's event processing loop to execute ready /// handlers. @@ -328,7 +332,7 @@ public: * * @throws boost::system::system_error Thrown on failure. */ - std::size_t poll(); + BOOST_ASIO_DECL std::size_t poll(); /// Run the io_service object's event processing loop to execute ready /// handlers. @@ -340,7 +344,7 @@ public: * * @return The number of handlers that were executed. */ - std::size_t poll(boost::system::error_code& ec); + BOOST_ASIO_DECL std::size_t poll(boost::system::error_code& ec); /// Run the io_service object's event processing loop to execute one ready /// handler. @@ -352,7 +356,7 @@ public: * * @throws boost::system::system_error Thrown on failure. */ - std::size_t poll_one(); + BOOST_ASIO_DECL std::size_t poll_one(); /// Run the io_service object's event processing loop to execute one ready /// handler. @@ -364,7 +368,7 @@ public: * * @return The number of handlers that were executed. */ - std::size_t poll_one(boost::system::error_code& ec); + BOOST_ASIO_DECL std::size_t poll_one(boost::system::error_code& ec); /// Stop the io_service object's event processing loop. /** @@ -373,7 +377,7 @@ public: * return as soon as possible. Subsequent calls to run(), run_one(), poll() * or poll_one() will return immediately until reset() is called. */ - void stop(); + BOOST_ASIO_DECL void stop(); /// Reset the io_service in preparation for a subsequent run() invocation. /** @@ -386,7 +390,7 @@ public: * This function must not be called while there are any unfinished calls to * the run(), run_one(), poll() or poll_one() functions. */ - void reset(); + BOOST_ASIO_DECL void reset(); /// Request the io_service to invoke the given handler. /** @@ -606,10 +610,10 @@ protected: /** * @param owner The io_service object that owns the service. */ - service(boost::asio::io_service& owner); + BOOST_ASIO_DECL service(boost::asio::io_service& owner); /// Destructor. - virtual ~service(); + BOOST_ASIO_DECL virtual ~service(); private: /// Destroy all user-defined handler objects owned by the service. @@ -632,10 +636,7 @@ class service_already_exists : public std::logic_error { public: - service_already_exists() - : std::logic_error("Service already exists.") - { - } + BOOST_ASIO_DECL service_already_exists(); }; /// Exception thrown when trying to add a service object to an io_service where @@ -644,17 +645,45 @@ class invalid_service_owner : public std::logic_error { public: - invalid_service_owner() - : std::logic_error("Invalid service owner.") + BOOST_ASIO_DECL invalid_service_owner(); +}; + +namespace detail { + +// Special derived service id type to keep classes header-file only. +template <typename Type> +class service_id + : public boost::asio::io_service::id +{ +}; + +// Special service base class to keep classes header-file only. +template <typename Type> +class service_base + : public boost::asio::io_service::service +{ +public: + static boost::asio::detail::service_id<Type> id; + + // Constructor. + service_base(boost::asio::io_service& io_service) + : boost::asio::io_service::service(io_service) { } }; +template <typename Type> +boost::asio::detail::service_id<Type> service_base<Type>::id; + +} // namespace detail } // namespace asio } // namespace boost -#include <boost/asio/impl/io_service.ipp> - #include <boost/asio/detail/pop_options.hpp> +#include <boost/asio/impl/io_service.hpp> +#if defined(BOOST_ASIO_HEADER_ONLY) +# include <boost/asio/impl/io_service.ipp> +#endif // defined(BOOST_ASIO_HEADER_ONLY) + #endif // BOOST_ASIO_IO_SERVICE_HPP |