📄 overlapped_ptr.hpp
字号:
//// overlapped_ptr.hpp// ~~~~~~~~~~~~~~~~~~//// 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_WINDOWS_OVERLAPPED_PTR_HPP#define BOOST_ASIO_WINDOWS_OVERLAPPED_PTR_HPP#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/io_service.hpp>#include <boost/asio/detail/noncopyable.hpp>#include <boost/asio/detail/win_iocp_overlapped_ptr.hpp>#if !defined(BOOST_ASIO_DISABLE_WINDOWS_OVERLAPPED_PTR)# if defined(BOOST_ASIO_HAS_IOCP)# define BOOST_ASIO_HAS_WINDOWS_OVERLAPPED_PTR 1# endif // defined(BOOST_ASIO_HAS_IOCP)#endif // !defined(BOOST_ASIO_DISABLE_WINDOWS_OVERLAPPED_PTR)#if defined(BOOST_ASIO_HAS_WINDOWS_OVERLAPPED_PTR) \ || defined(GENERATING_DOCUMENTATION)namespace boost {namespace asio {namespace windows {/// Wraps a handler to create an OVERLAPPED object for use with overlapped I/O./** * A special-purpose smart pointer used to wrap an application handler so that * it can be passed as the LPOVERLAPPED argument to overlapped I/O functions. * * @par Thread Safety * @e Distinct @e objects: Safe.@n * @e Shared @e objects: Unsafe. */class overlapped_ptr : private noncopyable{public: /// Construct an empty overlapped_ptr. overlapped_ptr() : impl_() { } /// Construct an overlapped_ptr to contain the specified handler. template <typename Handler> explicit overlapped_ptr(boost::asio::io_service& io_service, Handler handler) : impl_(io_service, handler) { } /// Destructor automatically frees the OVERLAPPED object unless released. ~overlapped_ptr() { } /// Reset to empty. void reset() { impl_.reset(); } /// Reset to contain the specified handler, freeing any current OVERLAPPED /// object. template <typename Handler> void reset(boost::asio::io_service& io_service, Handler handler) { impl_.reset(io_service, handler); } /// Get the contained OVERLAPPED object. OVERLAPPED* get() { return impl_.get(); } /// Get the contained OVERLAPPED object. const OVERLAPPED* get() const { return impl_.get(); } /// Release ownership of the OVERLAPPED object. OVERLAPPED* release() { return impl_.release(); } /// Post completion notification for overlapped operation. Releases ownership. void complete(const boost::system::error_code& ec, std::size_t bytes_transferred) { impl_.complete(ec, bytes_transferred); }private: detail::win_iocp_overlapped_ptr impl_;};} // namespace windows} // namespace asio} // namespace boost#endif // defined(BOOST_ASIO_HAS_WINDOWS_OVERLAPPED_PTR) // || defined(GENERATING_DOCUMENTATION)#include <boost/asio/detail/pop_options.hpp>#endif // BOOST_ASIO_WINDOWS_OVERLAPPED_PTR_HPP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -