summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/asio/include/asio/detail/reactive_serial_port_service.hpp
diff options
context:
space:
mode:
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.hpp29
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: