12 #ifndef ASIO_DETAIL_REACTIVE_SERIAL_PORT_SERVICE_HPP 13 #define ASIO_DETAIL_REACTIVE_SERIAL_PORT_SERVICE_HPP 15 #if defined(_MSC_VER) && (_MSC_VER >= 1200) 17 #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 21 #if defined(ASIO_HAS_SERIAL_PORT) 22 #if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__) 37 class reactive_serial_port_service
44 typedef reactive_descriptor_service::implementation_type implementation_type;
53 void construct(implementation_type& impl)
55 descriptor_service_.construct(impl);
59 void move_construct(implementation_type& impl,
60 implementation_type& other_impl)
62 descriptor_service_.move_construct(impl, other_impl);
66 void move_assign(implementation_type& impl,
67 reactive_serial_port_service& other_service,
68 implementation_type& other_impl)
70 descriptor_service_.move_assign(impl,
71 other_service.descriptor_service_, other_impl);
75 void destroy(implementation_type& impl)
77 descriptor_service_.destroy(impl);
86 const native_handle_type& native_descriptor,
89 return descriptor_service_.assign(impl, native_descriptor, ec);
93 bool is_open(
const implementation_type& impl)
const 95 return descriptor_service_.is_open(impl);
102 return descriptor_service_.close(impl, ec);
106 native_handle_type native_handle(implementation_type& impl)
108 return descriptor_service_.native_handle(impl);
115 return descriptor_service_.cancel(impl, ec);
119 template <
typename SettableSerialPortOption>
123 return do_set_option(impl,
124 &reactive_serial_port_service::store_option<SettableSerialPortOption>,
129 template <
typename GettableSerialPortOption>
133 return do_get_option(impl,
134 &reactive_serial_port_service::load_option<GettableSerialPortOption>,
144 descriptor_service_.native_handle(impl), 0), ec);
149 template <
typename ConstBufferSequence>
150 size_t write_some(implementation_type& impl,
153 return descriptor_service_.write_some(impl, buffers, ec);
158 template <
typename ConstBufferSequence,
typename Handler>
159 void async_write_some(implementation_type& impl,
160 const ConstBufferSequence& buffers, Handler& handler)
162 descriptor_service_.async_write_some(impl, buffers, handler);
166 template <
typename MutableBufferSequence>
167 size_t read_some(implementation_type& impl,
170 return descriptor_service_.read_some(impl, buffers, ec);
175 template <
typename MutableBufferSequence,
typename Handler>
176 void async_read_some(implementation_type& impl,
177 const MutableBufferSequence& buffers, Handler& handler)
179 descriptor_service_.async_read_some(impl, buffers, handler);
188 template <
typename SettableSerialPortOption>
192 return static_cast<const SettableSerialPortOption*
>(option)->store(
198 implementation_type& impl, store_function_type store,
206 template <
typename GettableSerialPortOption>
210 return static_cast<GettableSerialPortOption*
>(option)->load(storage, ec);
215 const implementation_type& impl, load_function_type load,
219 reactive_descriptor_service descriptor_service_;
227 #if defined(ASIO_HEADER_ONLY) 229 #endif // defined(ASIO_HEADER_ONLY) 231 #endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__) 232 #endif // defined(ASIO_HAS_SERIAL_PORT) 234 #endif // ASIO_DETAIL_REACTIVE_SERIAL_PORT_SERVICE_HPP ReturnType error_wrapper(ReturnType return_value, asio::error_code &ec)
Provides core I/O functionality.
const MutableBufferSequence & buffers
Class to represent an error code value.
ASIO_DECL int close(int d, state_type &state, asio::error_code &ec)
ASIO_DECL int open(const char *path, int flags, asio::error_code &ec)