diff options
Diffstat (limited to 'boost/asio/detail/impl/win_iocp_handle_service.ipp')
-rw-r--r-- | boost/asio/detail/impl/win_iocp_handle_service.ipp | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/boost/asio/detail/impl/win_iocp_handle_service.ipp b/boost/asio/detail/impl/win_iocp_handle_service.ipp index ea513bc1dd..4f35a1c0a8 100644 --- a/boost/asio/detail/impl/win_iocp_handle_service.ipp +++ b/boost/asio/detail/impl/win_iocp_handle_service.ipp @@ -67,14 +67,15 @@ public: }; win_iocp_handle_service::win_iocp_handle_service( - boost::asio::io_service& io_service) - : iocp_service_(boost::asio::use_service<win_iocp_io_service>(io_service)), + boost::asio::io_context& io_context) + : service_base<win_iocp_handle_service>(io_context), + iocp_service_(boost::asio::use_service<win_iocp_io_context>(io_context)), mutex_(), impl_list_(0) { } -void win_iocp_handle_service::shutdown_service() +void win_iocp_handle_service::shutdown() { // Close all implementations, causing all operations to complete. boost::asio::detail::mutex::scoped_lock lock(mutex_); @@ -200,7 +201,8 @@ boost::system::error_code win_iocp_handle_service::close( { if (is_open(impl)) { - BOOST_ASIO_HANDLER_OPERATION(("handle", &impl, "close")); + BOOST_ASIO_HANDLER_OPERATION((iocp_service_.context(), "handle", + &impl, reinterpret_cast<uintmax_t>(impl.handle_), "close")); if (!::CloseHandle(impl.handle_)) { @@ -234,7 +236,8 @@ boost::system::error_code win_iocp_handle_service::cancel( return ec; } - BOOST_ASIO_HANDLER_OPERATION(("handle", &impl, "cancel")); + BOOST_ASIO_HANDLER_OPERATION((iocp_service_.context(), "handle", + &impl, reinterpret_cast<uintmax_t>(impl.handle_), "cancel")); if (FARPROC cancel_io_ex_ptr = ::GetProcAddress( ::GetModuleHandleA("KERNEL32"), "CancelIoEx")) @@ -304,7 +307,7 @@ size_t win_iocp_handle_service::do_write( } // A request to write 0 bytes on a handle is a no-op. - if (boost::asio::buffer_size(buffer) == 0) + if (buffer.size() == 0) { ec = boost::system::error_code(); return 0; @@ -319,9 +322,8 @@ size_t win_iocp_handle_service::do_write( // Write the data. overlapped.Offset = offset & 0xFFFFFFFF; overlapped.OffsetHigh = (offset >> 32) & 0xFFFFFFFF; - BOOL ok = ::WriteFile(impl.handle_, - boost::asio::buffer_cast<LPCVOID>(buffer), - static_cast<DWORD>(boost::asio::buffer_size(buffer)), 0, &overlapped); + BOOL ok = ::WriteFile(impl.handle_, buffer.data(), + static_cast<DWORD>(buffer.size()), 0, &overlapped); if (!ok) { DWORD last_error = ::GetLastError(); @@ -360,7 +362,7 @@ void win_iocp_handle_service::start_write_op( { iocp_service_.on_completion(op, boost::asio::error::bad_descriptor); } - else if (boost::asio::buffer_size(buffer) == 0) + else if (buffer.size() == 0) { // A request to write 0 bytes on a handle is a no-op. iocp_service_.on_completion(op); @@ -370,9 +372,8 @@ void win_iocp_handle_service::start_write_op( DWORD bytes_transferred = 0; op->Offset = offset & 0xFFFFFFFF; op->OffsetHigh = (offset >> 32) & 0xFFFFFFFF; - BOOL ok = ::WriteFile(impl.handle_, - boost::asio::buffer_cast<LPCVOID>(buffer), - static_cast<DWORD>(boost::asio::buffer_size(buffer)), + BOOL ok = ::WriteFile(impl.handle_, buffer.data(), + static_cast<DWORD>(buffer.size()), &bytes_transferred, op); DWORD last_error = ::GetLastError(); if (!ok && last_error != ERROR_IO_PENDING @@ -398,7 +399,7 @@ size_t win_iocp_handle_service::do_read( } // A request to read 0 bytes on a stream handle is a no-op. - if (boost::asio::buffer_size(buffer) == 0) + if (buffer.size() == 0) { ec = boost::system::error_code(); return 0; @@ -413,9 +414,8 @@ size_t win_iocp_handle_service::do_read( // Read some data. overlapped.Offset = offset & 0xFFFFFFFF; overlapped.OffsetHigh = (offset >> 32) & 0xFFFFFFFF; - BOOL ok = ::ReadFile(impl.handle_, - boost::asio::buffer_cast<LPVOID>(buffer), - static_cast<DWORD>(boost::asio::buffer_size(buffer)), 0, &overlapped); + BOOL ok = ::ReadFile(impl.handle_, buffer.data(), + static_cast<DWORD>(buffer.size()), 0, &overlapped); if (!ok) { DWORD last_error = ::GetLastError(); @@ -468,7 +468,7 @@ void win_iocp_handle_service::start_read_op( { iocp_service_.on_completion(op, boost::asio::error::bad_descriptor); } - else if (boost::asio::buffer_size(buffer) == 0) + else if (buffer.size() == 0) { // A request to read 0 bytes on a handle is a no-op. iocp_service_.on_completion(op); @@ -478,9 +478,8 @@ void win_iocp_handle_service::start_read_op( DWORD bytes_transferred = 0; op->Offset = offset & 0xFFFFFFFF; op->OffsetHigh = (offset >> 32) & 0xFFFFFFFF; - BOOL ok = ::ReadFile(impl.handle_, - boost::asio::buffer_cast<LPVOID>(buffer), - static_cast<DWORD>(boost::asio::buffer_size(buffer)), + BOOL ok = ::ReadFile(impl.handle_, buffer.data(), + static_cast<DWORD>(buffer.size()), &bytes_transferred, op); DWORD last_error = ::GetLastError(); if (!ok && last_error != ERROR_IO_PENDING @@ -508,7 +507,8 @@ void win_iocp_handle_service::close_for_destruction(implementation_type& impl) { if (is_open(impl)) { - BOOST_ASIO_HANDLER_OPERATION(("handle", &impl, "close")); + BOOST_ASIO_HANDLER_OPERATION((iocp_service_.context(), "handle", + &impl, reinterpret_cast<uintmax_t>(impl.handle_), "close")); ::CloseHandle(impl.handle_); impl.handle_ = INVALID_HANDLE_VALUE; |