2021-10-05 21:37:46 +02:00

264 lines
14 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Endpoint requirements</title>
<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../boost_asio.html" title="Boost.Asio">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="DynamicBuffer_v2.html" title="Dynamic buffer requirements (version 2)">
<link rel="next" href="EndpointSequence.html" title="Endpoint sequence requirements">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
<td align="center"><a href="../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="DynamicBuffer_v2.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../boost_asio.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="EndpointSequence.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_asio.reference.Endpoint"></a><a class="link" href="Endpoint.html" title="Endpoint requirements">Endpoint requirements</a>
</h3></div></div></div>
<p>
A type <code class="computeroutput">X</code> meets the <code class="computeroutput">Endpoint</code> requirements if it
satisfies the requirements of <code class="computeroutput">Destructible</code> (C++Std [destructible]),
<code class="computeroutput">DefaultConstructible</code> (C++Std [defaultconstructible]), <code class="computeroutput">CopyConstructible</code>
(C++Std [copyconstructible]), and <code class="computeroutput">CopyAssignable</code> (C++Std [copyassignable]),
as well as the additional requirements listed below.
</p>
<p>
The default constructor and move operations of the type <code class="computeroutput">X</code> shall
not exit via an exception.
</p>
<p>
In the table below, <code class="computeroutput">a</code> denotes a (possibly const) value of type
<code class="computeroutput">X</code>, and <code class="computeroutput">u</code> denotes an identifier.
</p>
<div class="table">
<a name="boost_asio.reference.Endpoint.t0"></a><p class="title"><b>Table 11. Endpoint requirements</b></p>
<div class="table-contents"><table class="table" summary="Endpoint requirements">
<colgroup>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
expression
</p>
</th>
<th>
<p>
type
</p>
</th>
<th>
<p>
assertion/note<br> pre/post-conditions
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="computeroutput">X::protocol_type</code>
</p>
</td>
<td>
<p>
type meeting <a class="link" href="Protocol.html" title="Protocol requirements"><code class="computeroutput">Protocol</code></a>
requirements
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput">a.protocol()</code>
</p>
</td>
<td>
<p>
<code class="computeroutput">protocol_type</code>
</p>
</td>
<td>
</td>
</tr>
</tbody>
</table></div>
</div>
<br class="table-break"><p>
In the table below, <code class="computeroutput">a</code> denotes a (possibly const) value of type
<code class="computeroutput">X</code>, <code class="computeroutput">b</code> denotes a value of type <code class="computeroutput">X</code>, and
<code class="computeroutput">s</code> denotes a (possibly const) value of a type that is convertible
to <code class="computeroutput">size_t</code> and denotes a size in bytes.
</p>
<div class="table">
<a name="boost_asio.reference.Endpoint.t1"></a><p class="title"><b>Table 12. Endpoint requirements for extensible implementations</b></p>
<div class="table-contents"><table class="table" summary="Endpoint requirements for extensible implementations">
<colgroup>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
expression
</p>
</th>
<th>
<p>
type
</p>
</th>
<th>
<p>
assertion/note<br> pre/post-conditions
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="computeroutput">a.data()</code>
</p>
</td>
<td>
<p>
<code class="computeroutput">const void*</code>
</p>
</td>
<td>
<p>
Returns a pointer suitable for passing as the <span class="emphasis"><em>address</em></span>
argument to functions such as <span class="emphasis"><em>POSIX</em></span> <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/connect.html" target="_top"><code class="computeroutput"><span class="identifier">connect</span><span class="special">()</span></code></a>,
or as the <span class="emphasis"><em>dest_addr</em></span> argument to functions
such as <span class="emphasis"><em>POSIX</em></span> <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/sendto.html" target="_top"><code class="computeroutput"><span class="identifier">sendto</span><span class="special">()</span></code></a>.
The implementation shall perform a <code class="computeroutput">static_cast</code> on
the pointer to convert it to <code class="computeroutput">const sockaddr*</code>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput">b.data()</code>
</p>
</td>
<td>
<p>
<code class="computeroutput">void*</code>
</p>
</td>
<td>
<p>
Returns a pointer suitable for passing as the <span class="emphasis"><em>address</em></span>
argument to functions such as <span class="emphasis"><em>POSIX</em></span> <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/accept.html" target="_top"><code class="computeroutput"><span class="identifier">accept</span><span class="special">()</span></code></a>,
<a href="http://www.opengroup.org/onlinepubs/9699919799/functions/getpeername.html" target="_top"><code class="computeroutput"><span class="identifier">getpeername</span><span class="special">()</span></code></a>,
<a href="http://www.opengroup.org/onlinepubs/9699919799/functions/getsockname.html" target="_top"><code class="computeroutput"><span class="identifier">getsockname</span><span class="special">()</span></code></a>
and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/recvfrom.html" target="_top"><code class="computeroutput"><span class="identifier">recvfrom</span><span class="special">()</span></code></a>.
The implementation shall perform a <code class="computeroutput">static_cast</code> on
the pointer to convert it to <code class="computeroutput">sockaddr*</code>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput">a.size()</code>
</p>
</td>
<td>
<p>
<code class="computeroutput">size_t</code>
</p>
</td>
<td>
<p>
Returns a value suitable for passing as the <span class="emphasis"><em>address_len</em></span>
argument to functions such as <span class="emphasis"><em>POSIX</em></span> <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/connect.html" target="_top"><code class="computeroutput"><span class="identifier">connect</span><span class="special">()</span></code></a>,
or as the <span class="emphasis"><em>dest_len</em></span> argument to functions such
as <span class="emphasis"><em>POSIX</em></span> <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/sendto.html" target="_top"><code class="computeroutput"><span class="identifier">sendto</span><span class="special">()</span></code></a>,
after appropriate integer conversion has been performed.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput">b.resize(s)</code>
</p>
</td>
<td>
</td>
<td>
<p>
pre: <code class="computeroutput">s &gt;= 0</code><br> post: <code class="computeroutput">a.size() == s</code><br>
Passed the value contained in the <span class="emphasis"><em>address_len</em></span>
argument to functions such as <span class="emphasis"><em>POSIX</em></span> <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/accept.html" target="_top"><code class="computeroutput"><span class="identifier">accept</span><span class="special">()</span></code></a>,
<a href="http://www.opengroup.org/onlinepubs/9699919799/functions/getpeername.html" target="_top"><code class="computeroutput"><span class="identifier">getpeername</span><span class="special">()</span></code></a>,
<a href="http://www.opengroup.org/onlinepubs/9699919799/functions/getsockname.html" target="_top"><code class="computeroutput"><span class="identifier">getsockname</span><span class="special">()</span></code></a>
and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/recvfrom.html" target="_top"><code class="computeroutput"><span class="identifier">recvfrom</span><span class="special">()</span></code></a>,
after successful completion of the function. Permitted to throw
an exception if the protocol associated with the endpoint object
<code class="computeroutput">a</code> does not support the specified size.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput">a.capacity()</code>
</p>
</td>
<td>
<p>
<code class="computeroutput">size_t</code>
</p>
</td>
<td>
<p>
Returns a value suitable for passing as the <span class="emphasis"><em>address_len</em></span>
argument to functions such as <span class="emphasis"><em>POSIX</em></span> <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/accept.html" target="_top"><code class="computeroutput"><span class="identifier">accept</span><span class="special">()</span></code></a>,
<a href="http://www.opengroup.org/onlinepubs/9699919799/functions/getpeername.html" target="_top"><code class="computeroutput"><span class="identifier">getpeername</span><span class="special">()</span></code></a>,
<a href="http://www.opengroup.org/onlinepubs/9699919799/functions/getsockname.html" target="_top"><code class="computeroutput"><span class="identifier">getsockname</span><span class="special">()</span></code></a>
and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/recvfrom.html" target="_top"><code class="computeroutput"><span class="identifier">recvfrom</span><span class="special">()</span></code></a>,
after appropriate integer conversion has been performed.
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<br class="table-break">
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2003-2021 Christopher
M. Kohlhoff<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="DynamicBuffer_v2.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../boost_asio.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="EndpointSequence.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>