| [/ |
| / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) |
| / |
| / Distributed under the Boost Software License, Version 1.0. (See accompanying |
| / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
| /] |
| |
| [section:SocketService Socket service requirements] |
| |
| A socket service must meet the requirements for an [link |
| boost_asio.reference.IoObjectService I/O object service], as well as the |
| additional requirements listed below. |
| |
| In the table below, `X` denotes a socket service class for protocol [link |
| boost_asio.reference.Protocol `Protocol`], `a` denotes a value of type `X`, |
| `b` denotes a value of type `X::implementation_type`, `p` denotes a value of |
| type `Protocol`, `n` denotes a value of type `X::native_type`, `e` denotes a |
| value of type `Protocol::endpoint`, `ec` denotes a value of type `error_code`, |
| `s` denotes a value meeting [link boost_asio.reference.SettableSocketOption |
| `SettableSocketOption`] requirements, `g` denotes a value meeting [link |
| boost_asio.reference.GettableSocketOption `GettableSocketOption`] |
| requirements, `i` denotes a value meeting [link |
| boost_asio.reference.IoControlCommand `IoControlCommand`] requirements, `h` |
| denotes a value of type `socket_base::shutdown_type`, `ch` denotes a value |
| meeting [link boost_asio.reference.ConnectHandler `ConnectHandler`] |
| requirements, and `u` and `v` denote identifiers. |
| |
| [table SocketService requirements |
| [[expression] [return type] [assertion/note\npre/post-condition]] |
| [ |
| [`X::native_type`] |
| [] |
| [ |
| The implementation-defined native representation of a socket. Must |
| satisfy the requirements of `CopyConstructible` types (C++ Std, 20.1.3), |
| and the requirements of `Assignable` types (C++ Std, 23.1). |
| ] |
| ] |
| [ |
| [`a.construct(b);`] |
| [] |
| [ |
| From [link boost_asio.reference.IoObjectService IoObjectService] |
| requirements.\n |
| post: `!a.is_open(b)`. |
| ] |
| ] |
| [ |
| [`a.destroy(b);`] |
| [] |
| [ |
| From [link boost_asio.reference.IoObjectService IoObjectService] |
| requirements. Implicitly cancels asynchronous operations, as if by calling |
| `a.close(b, ec)`. |
| ] |
| ] |
| [ |
| [`` |
| a.open(b, p, ec); |
| ``] |
| [`error_code`] |
| [ |
| pre: `!a.is_open(b)`.\n |
| post: `!!ec || a.is_open(b)`. |
| ] |
| ] |
| [ |
| [`` |
| a.assign(b, p, n, ec); |
| ``] |
| [`error_code`] |
| [ |
| pre: `!a.is_open(b)`.\n |
| post: `!!ec || a.is_open(b)`. |
| ] |
| ] |
| [ |
| [`` |
| a.is_open(b); |
| ``] |
| [`bool`] |
| [ |
| ] |
| ] |
| [ |
| [`` |
| const X& u = a; |
| const X::implementation_type& v = b; |
| u.is_open(v); |
| ``] |
| [`bool`] |
| [ |
| ] |
| ] |
| [ |
| [`` |
| a.close(b, ec); |
| ``] |
| [`error_code`] |
| [ |
| If `a.is_open()` is true, causes any outstanding asynchronous operations |
| to complete as soon as possible. Handlers for cancelled operations shall |
| be passed the error code `error::operation_aborted`.\n |
| post: `!a.is_open(b)`. |
| ] |
| ] |
| [ |
| [`` |
| a.native(b); |
| ``] |
| [`X::native_type`] |
| [ |
| ] |
| ] |
| [ |
| [`` |
| a.cancel(b, ec); |
| ``] |
| [`error_code`] |
| [ |
| pre: `a.is_open(b)`.\n |
| Causes any outstanding asynchronous operations to complete as soon as |
| possible. Handlers for cancelled operations shall be passed the error |
| code `error::operation_aborted`. |
| ] |
| ] |
| [ |
| [`` |
| a.set_option(b, s, ec); |
| ``] |
| [`error_code`] |
| [ |
| pre: `a.is_open(b)`. |
| ] |
| ] |
| [ |
| [`` |
| a.get_option(b, g, ec); |
| ``] |
| [`error_code`] |
| [ |
| pre: `a.is_open(b)`. |
| ] |
| ] |
| [ |
| [`` |
| const X& u = a; |
| const X::implementation_type& v = b; |
| u.get_option(v, g, ec); |
| ``] |
| [`error_code`] |
| [ |
| pre: `a.is_open(b)`. |
| ] |
| ] |
| [ |
| [`` |
| a.io_control(b, i, ec); |
| ``] |
| [`error_code`] |
| [ |
| pre: `a.is_open(b)`. |
| ] |
| ] |
| [ |
| [`` |
| a.at_mark(b, ec); |
| ``] |
| [`bool`] |
| [ |
| pre: `a.is_open(b)`. |
| ] |
| ] |
| [ |
| [`` |
| const X& u = a; |
| const X::implementation_type& v = b; |
| u.at_mark(v, ec); |
| ``] |
| [`bool`] |
| [ |
| pre: `a.is_open(b)`. |
| ] |
| ] |
| [ |
| [`` |
| a.available(b, ec); |
| ``] |
| [`size_t`] |
| [ |
| pre: `a.is_open(b)`. |
| ] |
| ] |
| [ |
| [`` |
| const X& u = a; |
| const X::implementation_type& v = b; |
| u.available(v, ec); |
| ``] |
| [`size_t`] |
| [ |
| pre: `a.is_open(b)`. |
| ] |
| ] |
| [ |
| [`` |
| const typename Protocol::endpoint& u = e; |
| a.bind(b, u, ec); |
| ``] |
| [`error_code`] |
| [ |
| pre: `a.is_open(b)`. |
| ] |
| ] |
| [ |
| [`` |
| a.shutdown(b, h, ec); |
| ``] |
| [`error_code`] |
| [ |
| pre: `a.is_open(b)`. |
| ] |
| ] |
| [ |
| [`` |
| a.local_endpoint(b, ec); |
| ``] |
| [`Protocol::endpoint`] |
| [ |
| pre: `a.is_open(b)`. |
| ] |
| ] |
| [ |
| [`` |
| const X& u = a; |
| const X::implementation_type& v = b; |
| u.local_endpoint(v, ec); |
| ``] |
| [`Protocol::endpoint`] |
| [ |
| pre: `a.is_open(b)`. |
| ] |
| ] |
| [ |
| [`` |
| a.remote_endpoint(b, ec); |
| ``] |
| [`Protocol::endpoint`] |
| [ |
| pre: `a.is_open(b)`. |
| ] |
| ] |
| [ |
| [`` |
| const X& u = a; |
| const X::implementation_type& v = b; |
| u.remote_endpoint(v, ec); |
| ``] |
| [`Protocol::endpoint`] |
| [ |
| pre: `a.is_open(b)`. |
| ] |
| ] |
| [ |
| [`` |
| const typename Protocol::endpoint& u = e; |
| a.connect(b, u, ec); |
| ``] |
| [`error_code`] |
| [ |
| pre: `a.is_open(b)`. |
| ] |
| ] |
| [ |
| [`` |
| const typename Protocol::endpoint& u = e; |
| a.async_connect(b, u, ch); |
| ``] |
| [] |
| [ |
| pre: `a.is_open(b)`.\n |
| Initiates an asynchronous connect operation that is performed via the |
| `io_service` object `a.io_service()` and behaves according to [link |
| boost_asio.reference.asynchronous_operations asynchronous operation] |
| requirements. |
| ] |
| ] |
| ] |
| |
| [endsect] |