Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / asio / doc / requirements / Endpoint.qbk
1 [/
2  / Copyright (c) 2003-2019 Christopher M. Kohlhoff (chris at kohlhoff dot com)
3  /
4  / Distributed under the Boost Software License, Version 1.0. (See accompanying
5  / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6  /]
7
8 [section:Endpoint Endpoint requirements]
9
10 A type `X` meets the `Endpoint` requirements if it satisfies the requirements
11 of `Destructible` (C++Std [destructible]), `DefaultConstructible` (C++Std
12 [defaultconstructible]), `CopyConstructible` (C++Std [copyconstructible]),
13 and `CopyAssignable` (C++Std [copyassignable]), as well as the additional
14 requirements listed below.
15
16 The default constructor and move operations of the type `X` shall not exit via
17 an exception.
18
19 In the table below, `a` denotes a (possibly const) value of type `X`, and `u`
20 denotes an identifier.
21
22 [table Endpoint requirements
23   [[expression] [type] [assertion/note\npre/post-conditions]]
24   [
25     [`X::protocol_type`]
26     [type meeting [link boost_asio.reference.Protocol `Protocol`] requirements]
27     []
28   ]
29   [
30     [`a.protocol()`]
31     [`protocol_type`]
32     []
33   ]
34 ]
35
36 In the table below, `a` denotes a (possibly const) value of type `X`, `b`
37 denotes a value of type `X`, and `s` denotes a (possibly const) value of a type
38 that is convertible to `size_t` and denotes a size in bytes.
39
40 [table Endpoint requirements for extensible implementations
41   [[expression] [type] [assertion/note\npre/post-conditions]]
42   [
43     [`a.data()`]
44     [`const void*`]
45     [
46       Returns a pointer suitable for passing as the /address/ argument to
47       functions such as __POSIX__ __connect__, or as the /dest_addr/ argument
48       to functions such as  __POSIX__ __sendto__. The implementation shall
49       perform a `static_cast` on the pointer to convert it to `const
50       sockaddr*`.
51     ]
52   ]
53   [
54     [`b.data()`]
55     [`void*`]
56     [
57       Returns a pointer suitable for passing as the /address/ argument to
58       functions such as __POSIX__ __accept__, __getpeername__, __getsockname__
59       and __recvfrom__. The implementation shall perform a `static_cast` on the
60       pointer to convert it to `sockaddr*`.
61     ]
62   ]
63   [
64     [`a.size()`]
65     [`size_t`]
66     [
67       Returns a value suitable for passing as the /address_len/ argument
68       to functions such as __POSIX__ __connect__, or as the /dest_len/ argument
69       to functions such as __POSIX__ __sendto__, after appropriate integer
70       conversion has been performed.
71     ]
72   ]
73   [
74     [`b.resize(s)`]
75     []
76     [
77       pre: `s >= 0`\n
78       post: `a.size() == s`\n
79       Passed the value contained in the /address_len/ argument to functions
80       such as __POSIX__ __accept__, __getpeername__, __getsockname__ and
81       __recvfrom__, after successful completion of the function. Permitted to
82       throw an exception if the protocol associated with the endpoint object
83       `a` does not support the specified size.
84     ]
85   ]
86   [
87     [`a.capacity()`]
88     [`size_t`]
89     [
90       Returns a value suitable for passing as the /address_len/ argument to
91       functions such as __POSIX__ __accept__, __getpeername__, __getsockname__
92       and __recvfrom__, after appropriate integer conversion has been performed.
93     ]
94   ]
95 ]
96
97 [endsect]