diff options
Diffstat (limited to '3rdparty/asio/include/asio/detail/reactive_serial_port_service.hpp')
-rw-r--r-- | 3rdparty/asio/include/asio/detail/reactive_serial_port_service.hpp | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/3rdparty/asio/include/asio/detail/reactive_serial_port_service.hpp b/3rdparty/asio/include/asio/detail/reactive_serial_port_service.hpp index 986e87b45fe..e5a605c943d 100644 --- a/3rdparty/asio/include/asio/detail/reactive_serial_port_service.hpp +++ b/3rdparty/asio/include/asio/detail/reactive_serial_port_service.hpp @@ -2,7 +2,7 @@ // detail/reactive_serial_port_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -23,7 +23,7 @@ #include <string> #include "asio/error.hpp" -#include "asio/io_context.hpp" +#include "asio/execution_context.hpp" #include "asio/serial_port_base.hpp" #include "asio/detail/descriptor_ops.hpp" #include "asio/detail/reactive_descriptor_service.hpp" @@ -35,7 +35,7 @@ namespace detail { // Extend reactive_descriptor_service to provide serial port support. class reactive_serial_port_service : - public service_base<reactive_serial_port_service> + public execution_context_service_base<reactive_serial_port_service> { public: // The native type of a serial port. @@ -44,8 +44,7 @@ public: // The implementation type of the serial port. typedef reactive_descriptor_service::implementation_type implementation_type; - ASIO_DECL reactive_serial_port_service( - asio::io_context& io_context); + ASIO_DECL reactive_serial_port_service(execution_context& context); // Destroy all user-defined handler objects owned by the service. ASIO_DECL void shutdown(); @@ -140,9 +139,8 @@ public: asio::error_code send_break(implementation_type& impl, asio::error_code& ec) { - errno = 0; - descriptor_ops::error_wrapper(::tcsendbreak( - descriptor_service_.native_handle(impl), 0), ec); + int result = ::tcsendbreak(descriptor_service_.native_handle(impl), 0); + descriptor_ops::get_last_error(ec, result < 0); return ec; } @@ -156,11 +154,12 @@ public: // Start an asynchronous write. The data being written must be valid for the // lifetime of the asynchronous operation. - template <typename ConstBufferSequence, typename Handler> + template <typename ConstBufferSequence, typename Handler, typename IoExecutor> void async_write_some(implementation_type& impl, - const ConstBufferSequence& buffers, Handler& handler) + const ConstBufferSequence& buffers, + Handler& handler, const IoExecutor& io_ex) { - descriptor_service_.async_write_some(impl, buffers, handler); + descriptor_service_.async_write_some(impl, buffers, handler, io_ex); } // Read some data. Returns the number of bytes received. @@ -173,11 +172,13 @@ public: // Start an asynchronous read. The buffer for the data being received must be // valid for the lifetime of the asynchronous operation. - template <typename MutableBufferSequence, typename Handler> + template <typename MutableBufferSequence, + typename Handler, typename IoExecutor> void async_read_some(implementation_type& impl, - const MutableBufferSequence& buffers, Handler& handler) + const MutableBufferSequence& buffers, + Handler& handler, const IoExecutor& io_ex) { - descriptor_service_.async_read_some(impl, buffers, handler); + descriptor_service_.async_read_some(impl, buffers, handler, io_ex); } private: |