11 #ifndef ASIO_SEQ_PACKET_SOCKET_SERVICE_HPP 12 #define ASIO_SEQ_PACKET_SOCKET_SERVICE_HPP 14 #if defined(_MSC_VER) && (_MSC_VER >= 1200) 16 #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 25 #if defined(ASIO_WINDOWS_RUNTIME) 27 #elif defined(ASIO_HAS_IOCP) 38 template <
typename Protocol>
40 #if defined(GENERATING_DOCUMENTATION)
44 seq_packet_socket_service<Protocol> >
48 #if defined(GENERATING_DOCUMENTATION) 61 #if defined(ASIO_WINDOWS_RUNTIME) 63 #elif defined(ASIO_HAS_IOCP) 64 typedef detail::win_iocp_socket_service<Protocol> service_impl_type;
71 #if defined(GENERATING_DOCUMENTATION) 78 #if defined(GENERATING_DOCUMENTATION) 85 #if defined(GENERATING_DOCUMENTATION) 96 service_impl_(io_service)
106 #if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) 107 void move_construct(implementation_type& impl,
109 implementation_type& other_impl)
115 void move_assign(implementation_type& impl,
117 implementation_type& other_impl)
119 service_impl_.
move_assign(impl, other_service.service_impl_, other_impl);
124 template <
typename Protocol1>
125 void converting_move_construct(implementation_type& impl,
127 Protocol1>::implementation_type& other_impl,
129 Protocol1, Protocol>::value>::type* = 0)
131 service_impl_.template converting_move_construct<Protocol1>(
134 #endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) 146 if (protocol.type() ==
ASIO_OS_DEF(SOCK_SEQPACKET))
147 service_impl_.
open(impl, protocol, ec);
155 const protocol_type& protocol,
const native_handle_type& native_socket,
158 return service_impl_.
assign(impl, protocol, native_socket, ec);
162 bool is_open(
const implementation_type& impl)
const 164 return service_impl_.
is_open(impl);
171 return service_impl_.
close(impl, ec);
175 native_type
native(implementation_type& impl)
190 return service_impl_.
cancel(impl, ec);
197 return service_impl_.
at_mark(impl, ec);
204 return service_impl_.
available(impl, ec);
211 return service_impl_.
bind(impl, endpoint, ec);
218 return service_impl_.
connect(impl, peer_endpoint, ec);
222 template <
typename ConnectHandler>
225 async_connect(implementation_type& impl,
239 template <
typename SettableSocketOption>
243 return service_impl_.
set_option(impl, option, ec);
247 template <
typename GettableSocketOption>
251 return service_impl_.
get_option(impl, option, ec);
255 template <
typename IoControlCommand>
259 return service_impl_.
io_control(impl, command, ec);
306 return service_impl_.
shutdown(impl, what, ec);
310 template <
typename ConstBufferSequence>
311 std::size_t
send(implementation_type& impl,
312 const ConstBufferSequence&
buffers,
315 return service_impl_.
send(impl, buffers, flags, ec);
319 template <
typename ConstBufferSequence,
typename WriteHandler>
322 async_send(implementation_type& impl,
337 template <
typename MutableBufferSequence>
338 std::size_t
receive(implementation_type& impl,
343 buffers, in_flags, out_flags, ec);
347 template <
typename MutableBufferSequence,
typename ReadHandler>
350 async_receive(implementation_type& impl,
360 buffers, in_flags, out_flags, init.
handler);
367 void shutdown_service()
373 service_impl_type service_impl_;
380 #endif // ASIO_SEQ_PACKET_SOCKET_SERVICE_HPP bool non_blocking(const implementation_type &impl) const
Gets the non-blocking mode of the socket.
int message_flags
Bitmask type for flags that can be passed to send and receive operations.
asio::error_code assign(implementation_type &impl, const protocol_type &protocol, const native_handle_type &native_socket, asio::error_code &ec)
asio::error_code get_option(const implementation_type &impl, GettableSocketOption &option, asio::error_code &ec) const
Get a socket option.
asio::error_code bind(implementation_type &impl, const endpoint_type &endpoint, asio::error_code &ec)
bool at_mark(const base_implementation_type &impl, asio::error_code &ec) const
Class used to uniquely identify a service.
asio::error_code connect(implementation_type &impl, const endpoint_type &peer_endpoint, asio::error_code &ec)
Provides core I/O functionality.
void construct(implementation_type &impl)
Construct a new sequenced packet socket implementation.
service_impl_type::native_handle_type native_handle_type
The native socket type.
asio::error_code cancel(implementation_type &impl, asio::error_code &ec)
Cancel all asynchronous operations associated with the socket.
ASIO_DECL void shutdown_service()
bool native_non_blocking(const implementation_type &impl) const
Gets the non-blocking mode of the native socket implementation.
asio::error_code open(implementation_type &impl, const protocol_type &protocol, asio::error_code &ec)
Open a sequenced packet socket.
const MutableBufferSequence socket_base::message_flags in_flags
asio::error_code get_option(const implementation_type &impl, Option &option, asio::error_code &ec) const
ASIO_DECL void destroy(base_implementation_type &impl)
asio::basic_streambuf< Allocator > MatchCondition enable_if< is_match_condition< MatchCondition >::value >::type *detail::async_result_init< ReadHandler, void(asio::error_code, std::size_t)> init(ASIO_MOVE_CAST(ReadHandler)(handler))
void destroy(implementation_type &impl)
Destroy a sequenced packet socket implementation.
bool is_open(const implementation_type &impl) const
Determine whether the socket is open.
const endpoint_type ASIO_MOVE_ARG(ConnectHandler) handler)
const endpoint_type & peer_endpoint
size_t send(base_implementation_type &impl, const ConstBufferSequence &buffers, socket_base::message_flags flags, asio::error_code &ec)
void async_connect(implementation_type &impl, const endpoint_type &peer_endpoint, Handler &handler)
asio::error_code io_control(implementation_type &impl, IoControlCommand &command, asio::error_code &ec)
Perform an IO control command on the socket.
asio::error_code io_control(base_implementation_type &impl, IO_Control_Command &command, asio::error_code &ec)
asio::error_code non_blocking(implementation_type &impl, bool mode, asio::error_code &ec)
Sets the non-blocking mode of the socket.
void async_receive_with_flags(base_implementation_type &impl, const MutableBufferSequence &buffers, socket_base::message_flags in_flags, socket_base::message_flags &out_flags, Handler &handler)
void move_assign(implementation_type &impl, reactive_socket_service_base &other_service, implementation_type &other_impl)
endpoint_type local_endpoint(const implementation_type &impl, asio::error_code &ec) const
ASIO_DECL void construct(base_implementation_type &impl)
asio::error_code assign(implementation_type &impl, const protocol_type &protocol, const native_handle_type &native_socket, asio::error_code &ec)
Assign an existing native socket to a sequenced packet socket.
const MutableBufferSequence socket_base::message_flags socket_base::message_flags & out_flags
size_t receive_with_flags(base_implementation_type &impl, const MutableBufferSequence &buffers, socket_base::message_flags in_flags, socket_base::message_flags &out_flags, asio::error_code &ec)
const ConstBufferSequence & buffers
asio::error_code set_option(implementation_type &impl, const Option &option, asio::error_code &ec)
endpoint_type remote_endpoint(const implementation_type &impl, asio::error_code &ec) const
Get the remote endpoint.
socket_type native_handle_type
Protocol::endpoint endpoint_type
The endpoint type.
asio::error_code set_option(implementation_type &impl, const SettableSocketOption &option, asio::error_code &ec)
Set a socket option.
std::size_t send(implementation_type &impl, const ConstBufferSequence &buffers, socket_base::message_flags flags, asio::error_code &ec)
Send the given data to the peer.
Default service implementation for a sequenced packet socket.
const ConstBufferSequence socket_base::message_flags ASIO_MOVE_ARG(WriteHandler) handler)
ASIO_INITFN_RESULT_TYPE(ConnectHandler, void(asio::error_code)) async_connect(implementation_type &impl
Start an asynchronous connect.
Protocol protocol_type
The protocol type.
shutdown_type
Different ways a socket may be shutdown.
asio::error_code bind(implementation_type &impl, const endpoint_type &endpoint, asio::error_code &ec)
Bind the sequenced packet socket to the specified local endpoint.
asio::error_code open(implementation_type &impl, const protocol_type &protocol, asio::error_code &ec)
service_impl_type::implementation_type implementation_type
The type of a sequenced packet socket implementation.
void move_construct(implementation_type &impl, implementation_type &other_impl)
bool is_open(const base_implementation_type &impl) const
asio::error_code connect(implementation_type &impl, const endpoint_type &peer_endpoint, asio::error_code &ec)
Connect the sequenced packet socket to the specified endpoint.
Class to represent an error code value.
service_impl_type::native_handle_type native_type
(Deprecated: Use native_handle_type.) The native socket type.
void async_send(base_implementation_type &impl, const ConstBufferSequence &buffers, socket_base::message_flags flags, Handler &handler)
ASIO_DECL asio::error_code close(base_implementation_type &impl, asio::error_code &ec)
bool native_non_blocking(const base_implementation_type &impl) const
native_type native(implementation_type &impl)
(Deprecated: Use native_handle().) Get the native socket implementation.
static asio::detail::service_id< seq_packet_socket_service< Protocol > > id
endpoint_type local_endpoint(const implementation_type &impl, asio::error_code &ec) const
Get the local endpoint.
asio::error_code native_non_blocking(implementation_type &impl, bool mode, asio::error_code &ec)
Sets the non-blocking mode of the native socket implementation.
ASIO_DECL asio::error_code cancel(base_implementation_type &impl, asio::error_code &ec)
handler_type< Handler, Signature >::type handler
#define ASIO_MOVE_CAST(type)
bool non_blocking(const base_implementation_type &impl) const
std::size_t receive(implementation_type &impl, const MutableBufferSequence &buffers, socket_base::message_flags in_flags, socket_base::message_flags &out_flags, asio::error_code &ec)
Receive some data from the peer.
async_result< typename handler_type< Handler, Signature >::type > result
native_handle_type native_handle(implementation_type &impl)
service_base(asio::io_service &io_service)
Base class for all io_service services.
asio::error_code close(implementation_type &impl, asio::error_code &ec)
Close a sequenced packet socket implementation.
const ConstBufferSequence socket_base::message_flags flags
std::size_t available(const implementation_type &impl, asio::error_code &ec) const
Determine the number of bytes available for reading.
seq_packet_socket_service(asio::io_service &io_service)
native_handle_type native_handle(implementation_type &impl)
Get the native socket implementation.
const MutableBufferSequence socket_base::message_flags socket_base::message_flags ASIO_MOVE_ARG(ReadHandler) handler)
std::size_t available(const base_implementation_type &impl, asio::error_code &ec) const
asio::error_code shutdown(base_implementation_type &impl, socket_base::shutdown_type what, asio::error_code &ec)
endpoint_type remote_endpoint(const implementation_type &impl, asio::error_code &ec) const
bool at_mark(const implementation_type &impl, asio::error_code &ec) const
Determine whether the socket is at the out-of-band data mark.
asio::error_code shutdown(implementation_type &impl, socket_base::shutdown_type what, asio::error_code &ec)
Disable sends or receives on the socket.