Imported Upstream version 1.49.0
[platform/upstream/boost.git] / doc / html / boost_asio / reference / SocketService.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>Socket service requirements</title>
5 <link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
7 <link rel="home" href="../../boost_asio.html" title="Boost.Asio">
8 <link rel="up" href="../reference.html" title="Reference">
9 <link rel="prev" href="SocketAcceptorService.html" title="Socket acceptor service requirements">
10 <link rel="next" href="StreamDescriptorService.html" title="Stream descriptor service requirements">
11 </head>
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table cellpadding="2" width="100%"><tr>
14 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
15 <td align="center"><a href="../../../../index.html">Home</a></td>
16 <td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
17 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19 <td align="center"><a href="../../../../more/index.htm">More</a></td>
20 </tr></table>
21 <hr>
22 <div class="spirit-nav">
23 <a accesskey="p" href="SocketAcceptorService.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="StreamDescriptorService.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
24 </div>
25 <div class="section">
26 <div class="titlepage"><div><div><h3 class="title">
27 <a name="boost_asio.reference.SocketService"></a><a class="link" href="SocketService.html" title="Socket service requirements">Socket service requirements</a>
28 </h3></div></div></div>
29 <p>
30         A socket service must meet the requirements for an <a class="link" href="IoObjectService.html" title="I/O object service requirements">I/O
31         object service</a> with support for movability, as well as the additional
32         requirements listed below.
33       </p>
34 <p>
35         In the table below, <code class="computeroutput"><span class="identifier">X</span></code> denotes
36         a socket service class for protocol <a class="link" href="Protocol.html" title="Protocol requirements"><code class="computeroutput"><span class="identifier">Protocol</span></code></a>, <code class="computeroutput"><span class="identifier">a</span></code>
37         and <code class="computeroutput"><span class="identifier">ao</span></code> denote values of type
38         <code class="computeroutput"><span class="identifier">X</span></code>, <code class="computeroutput"><span class="identifier">b</span></code>
39         and <code class="computeroutput"><span class="identifier">c</span></code> denote values of type
40         <code class="computeroutput"><span class="identifier">X</span><span class="special">::</span><span class="identifier">implementation_type</span></code>, <code class="computeroutput"><span class="identifier">p</span></code>
41         denotes a value of type <code class="computeroutput"><span class="identifier">Protocol</span></code>,
42         <code class="computeroutput"><span class="identifier">n</span></code> denotes a value of type
43         <code class="computeroutput"><span class="identifier">X</span><span class="special">::</span><span class="identifier">native_handle_type</span></code>, <code class="computeroutput"><span class="identifier">e</span></code>
44         denotes a value of type <code class="computeroutput"><span class="identifier">Protocol</span><span class="special">::</span><span class="identifier">endpoint</span></code>,
45         <code class="computeroutput"><span class="identifier">ec</span></code> denotes a value of type
46         <code class="computeroutput"><span class="identifier">error_code</span></code>, <code class="computeroutput"><span class="identifier">s</span></code> denotes a value meeting <a class="link" href="SettableSocketOption.html" title="Settable socket option requirements"><code class="computeroutput"><span class="identifier">SettableSocketOption</span></code></a> requirements,
47         <code class="computeroutput"><span class="identifier">g</span></code> denotes a value meeting
48         <a class="link" href="GettableSocketOption.html" title="Gettable socket option requirements"><code class="computeroutput"><span class="identifier">GettableSocketOption</span></code></a>
49         requirements, <code class="computeroutput"><span class="identifier">i</span></code> denotes a
50         value meeting <a class="link" href="IoControlCommand.html" title="I/O control command requirements"><code class="computeroutput"><span class="identifier">IoControlCommand</span></code></a> requirements,
51         <code class="computeroutput"><span class="identifier">h</span></code> denotes a value of type
52         <code class="computeroutput"><span class="identifier">socket_base</span><span class="special">::</span><span class="identifier">shutdown_type</span></code>, <code class="computeroutput"><span class="identifier">ch</span></code>
53         denotes a value meeting <a class="link" href="ConnectHandler.html" title="Connect handler requirements"><code class="computeroutput"><span class="identifier">ConnectHandler</span></code></a> requirements, and
54         <code class="computeroutput"><span class="identifier">u</span></code> and <code class="computeroutput"><span class="identifier">v</span></code>
55         denote identifiers.
56       </p>
57 <div class="table">
58 <a name="boost_asio.reference.SocketService.t0"></a><p class="title"><b>Table&#160;30.&#160;SocketService requirements</b></p>
59 <div class="table-contents"><table class="table" summary="SocketService requirements">
60 <colgroup>
61 <col>
62 <col>
63 <col>
64 </colgroup>
65 <thead><tr>
66 <th>
67                 <p>
68                   expression
69                 </p>
70               </th>
71 <th>
72                 <p>
73                   return type
74                 </p>
75               </th>
76 <th>
77                 <p>
78                   assertion/note<br> pre/post-condition
79                 </p>
80               </th>
81 </tr></thead>
82 <tbody>
83 <tr>
84 <td>
85                 <p>
86                   <code class="computeroutput"><span class="identifier">X</span><span class="special">::</span><span class="identifier">native_handle_type</span></code>
87                 </p>
88               </td>
89 <td>
90               </td>
91 <td>
92                 <p>
93                   The implementation-defined native representation of a socket. Must
94                   satisfy the requirements of <code class="computeroutput"><span class="identifier">CopyConstructible</span></code>
95                   types (C++ Std, 20.1.3), and the requirements of <code class="computeroutput"><span class="identifier">Assignable</span></code> types (C++ Std, 23.1).
96                 </p>
97               </td>
98 </tr>
99 <tr>
100 <td>
101                 <p>
102                   <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">construct</span><span class="special">(</span><span class="identifier">b</span><span class="special">);</span></code>
103                 </p>
104               </td>
105 <td>
106               </td>
107 <td>
108                 <p>
109                   From <a class="link" href="IoObjectService.html" title="I/O object service requirements">IoObjectService</a>
110                   requirements.<br> post: <code class="computeroutput"><span class="special">!</span><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.
111                 </p>
112               </td>
113 </tr>
114 <tr>
115 <td>
116                 <p>
117                   <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">destroy</span><span class="special">(</span><span class="identifier">b</span><span class="special">);</span></code>
118                 </p>
119               </td>
120 <td>
121               </td>
122 <td>
123                 <p>
124                   From <a class="link" href="IoObjectService.html" title="I/O object service requirements">IoObjectService</a>
125                   requirements. Implicitly cancels asynchronous operations, as if
126                   by calling <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">close</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
127                   <span class="identifier">ec</span><span class="special">)</span></code>.
128                 </p>
129               </td>
130 </tr>
131 <tr>
132 <td>
133                 <p>
134 </p>
135 <pre class="programlisting"><span class="identifier">a</span><span class="special">.</span><span class="identifier">move_construct</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">c</span><span class="special">);</span>
136 </pre>
137 <p>
138                 </p>
139               </td>
140 <td>
141               </td>
142 <td>
143                 <p>
144                   From <a class="link" href="IoObjectService.html" title="I/O object service requirements">IoObjectService</a>
145                   requirements. The underlying native representation is moved from
146                   <code class="computeroutput"><span class="identifier">c</span></code> to <code class="computeroutput"><span class="identifier">b</span></code>.
147                 </p>
148               </td>
149 </tr>
150 <tr>
151 <td>
152                 <p>
153 </p>
154 <pre class="programlisting"><span class="identifier">a</span><span class="special">.</span><span class="identifier">move_assign</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">ao</span><span class="special">,</span> <span class="identifier">c</span><span class="special">);</span>
155 </pre>
156 <p>
157                 </p>
158               </td>
159 <td>
160               </td>
161 <td>
162                 <p>
163                   From <a class="link" href="IoObjectService.html" title="I/O object service requirements">IoObjectService</a>
164                   requirements. Implicitly cancels asynchronous operations associated
165                   with <code class="computeroutput"><span class="identifier">b</span></code>, as if by
166                   calling <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">close</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
167                   <span class="identifier">ec</span><span class="special">)</span></code>.
168                   Then the underlying native representation is moved from <code class="computeroutput"><span class="identifier">c</span></code> to <code class="computeroutput"><span class="identifier">b</span></code>.
169                 </p>
170               </td>
171 </tr>
172 <tr>
173 <td>
174                 <p>
175 </p>
176 <pre class="programlisting"><span class="identifier">a</span><span class="special">.</span><span class="identifier">open</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">ec</span><span class="special">);</span>
177 </pre>
178 <p>
179                 </p>
180               </td>
181 <td>
182                 <p>
183                   <code class="computeroutput"><span class="identifier">error_code</span></code>
184                 </p>
185               </td>
186 <td>
187                 <p>
188                   pre: <code class="computeroutput"><span class="special">!</span><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.<br> post: <code class="computeroutput"><span class="special">!!</span><span class="identifier">ec</span> <span class="special">||</span>
189                   <span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.
190                 </p>
191               </td>
192 </tr>
193 <tr>
194 <td>
195                 <p>
196 </p>
197 <pre class="programlisting"><span class="identifier">a</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">ec</span><span class="special">);</span>
198 </pre>
199 <p>
200                 </p>
201               </td>
202 <td>
203                 <p>
204                   <code class="computeroutput"><span class="identifier">error_code</span></code>
205                 </p>
206               </td>
207 <td>
208                 <p>
209                   pre: <code class="computeroutput"><span class="special">!</span><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.<br> post: <code class="computeroutput"><span class="special">!!</span><span class="identifier">ec</span> <span class="special">||</span>
210                   <span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.
211                 </p>
212               </td>
213 </tr>
214 <tr>
215 <td>
216                 <p>
217 </p>
218 <pre class="programlisting"><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">);</span>
219 </pre>
220 <p>
221                 </p>
222               </td>
223 <td>
224                 <p>
225                   <code class="computeroutput"><span class="keyword">bool</span></code>
226                 </p>
227               </td>
228 <td>
229               </td>
230 </tr>
231 <tr>
232 <td>
233                 <p>
234 </p>
235 <pre class="programlisting"><span class="keyword">const</span> <span class="identifier">X</span><span class="special">&amp;</span> <span class="identifier">u</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span>
236 <span class="keyword">const</span> <span class="identifier">X</span><span class="special">::</span><span class="identifier">implementation_type</span><span class="special">&amp;</span> <span class="identifier">v</span> <span class="special">=</span> <span class="identifier">b</span><span class="special">;</span>
237 <span class="identifier">u</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">v</span><span class="special">);</span>
238 </pre>
239 <p>
240                 </p>
241               </td>
242 <td>
243                 <p>
244                   <code class="computeroutput"><span class="keyword">bool</span></code>
245                 </p>
246               </td>
247 <td>
248               </td>
249 </tr>
250 <tr>
251 <td>
252                 <p>
253 </p>
254 <pre class="programlisting"><span class="identifier">a</span><span class="special">.</span><span class="identifier">close</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">ec</span><span class="special">);</span>
255 </pre>
256 <p>
257                 </p>
258               </td>
259 <td>
260                 <p>
261                   <code class="computeroutput"><span class="identifier">error_code</span></code>
262                 </p>
263               </td>
264 <td>
265                 <p>
266                   If <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">()</span></code>
267                   is true, causes any outstanding asynchronous operations to complete
268                   as soon as possible. Handlers for cancelled operations shall be
269                   passed the error code <code class="computeroutput"><span class="identifier">error</span><span class="special">::</span><span class="identifier">operation_aborted</span></code>.<br>
270                   post: <code class="computeroutput"><span class="special">!</span><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.
271                 </p>
272               </td>
273 </tr>
274 <tr>
275 <td>
276                 <p>
277 </p>
278 <pre class="programlisting"><span class="identifier">a</span><span class="special">.</span><span class="identifier">native_handle</span><span class="special">(</span><span class="identifier">b</span><span class="special">);</span>
279 </pre>
280 <p>
281                 </p>
282               </td>
283 <td>
284                 <p>
285                   <code class="computeroutput"><span class="identifier">X</span><span class="special">::</span><span class="identifier">native_handle_type</span></code>
286                 </p>
287               </td>
288 <td>
289               </td>
290 </tr>
291 <tr>
292 <td>
293                 <p>
294 </p>
295 <pre class="programlisting"><span class="identifier">a</span><span class="special">.</span><span class="identifier">cancel</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">ec</span><span class="special">);</span>
296 </pre>
297 <p>
298                 </p>
299               </td>
300 <td>
301                 <p>
302                   <code class="computeroutput"><span class="identifier">error_code</span></code>
303                 </p>
304               </td>
305 <td>
306                 <p>
307                   pre: <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.<br>
308                   Causes any outstanding asynchronous operations to complete as soon
309                   as possible. Handlers for cancelled operations shall be passed
310                   the error code <code class="computeroutput"><span class="identifier">error</span><span class="special">::</span><span class="identifier">operation_aborted</span></code>.
311                 </p>
312               </td>
313 </tr>
314 <tr>
315 <td>
316                 <p>
317 </p>
318 <pre class="programlisting"><span class="identifier">a</span><span class="special">.</span><span class="identifier">set_option</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">ec</span><span class="special">);</span>
319 </pre>
320 <p>
321                 </p>
322               </td>
323 <td>
324                 <p>
325                   <code class="computeroutput"><span class="identifier">error_code</span></code>
326                 </p>
327               </td>
328 <td>
329                 <p>
330                   pre: <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.
331                 </p>
332               </td>
333 </tr>
334 <tr>
335 <td>
336                 <p>
337 </p>
338 <pre class="programlisting"><span class="identifier">a</span><span class="special">.</span><span class="identifier">get_option</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">ec</span><span class="special">);</span>
339 </pre>
340 <p>
341                 </p>
342               </td>
343 <td>
344                 <p>
345                   <code class="computeroutput"><span class="identifier">error_code</span></code>
346                 </p>
347               </td>
348 <td>
349                 <p>
350                   pre: <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.
351                 </p>
352               </td>
353 </tr>
354 <tr>
355 <td>
356                 <p>
357 </p>
358 <pre class="programlisting"><span class="keyword">const</span> <span class="identifier">X</span><span class="special">&amp;</span> <span class="identifier">u</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span>
359 <span class="keyword">const</span> <span class="identifier">X</span><span class="special">::</span><span class="identifier">implementation_type</span><span class="special">&amp;</span> <span class="identifier">v</span> <span class="special">=</span> <span class="identifier">b</span><span class="special">;</span>
360 <span class="identifier">u</span><span class="special">.</span><span class="identifier">get_option</span><span class="special">(</span><span class="identifier">v</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">ec</span><span class="special">);</span>
361 </pre>
362 <p>
363                 </p>
364               </td>
365 <td>
366                 <p>
367                   <code class="computeroutput"><span class="identifier">error_code</span></code>
368                 </p>
369               </td>
370 <td>
371                 <p>
372                   pre: <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.
373                 </p>
374               </td>
375 </tr>
376 <tr>
377 <td>
378                 <p>
379 </p>
380 <pre class="programlisting"><span class="identifier">a</span><span class="special">.</span><span class="identifier">io_control</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">ec</span><span class="special">);</span>
381 </pre>
382 <p>
383                 </p>
384               </td>
385 <td>
386                 <p>
387                   <code class="computeroutput"><span class="identifier">error_code</span></code>
388                 </p>
389               </td>
390 <td>
391                 <p>
392                   pre: <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.
393                 </p>
394               </td>
395 </tr>
396 <tr>
397 <td>
398                 <p>
399 </p>
400 <pre class="programlisting"><span class="identifier">a</span><span class="special">.</span><span class="identifier">at_mark</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">ec</span><span class="special">);</span>
401 </pre>
402 <p>
403                 </p>
404               </td>
405 <td>
406                 <p>
407                   <code class="computeroutput"><span class="keyword">bool</span></code>
408                 </p>
409               </td>
410 <td>
411                 <p>
412                   pre: <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.
413                 </p>
414               </td>
415 </tr>
416 <tr>
417 <td>
418                 <p>
419 </p>
420 <pre class="programlisting"><span class="keyword">const</span> <span class="identifier">X</span><span class="special">&amp;</span> <span class="identifier">u</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span>
421 <span class="keyword">const</span> <span class="identifier">X</span><span class="special">::</span><span class="identifier">implementation_type</span><span class="special">&amp;</span> <span class="identifier">v</span> <span class="special">=</span> <span class="identifier">b</span><span class="special">;</span>
422 <span class="identifier">u</span><span class="special">.</span><span class="identifier">at_mark</span><span class="special">(</span><span class="identifier">v</span><span class="special">,</span> <span class="identifier">ec</span><span class="special">);</span>
423 </pre>
424 <p>
425                 </p>
426               </td>
427 <td>
428                 <p>
429                   <code class="computeroutput"><span class="keyword">bool</span></code>
430                 </p>
431               </td>
432 <td>
433                 <p>
434                   pre: <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.
435                 </p>
436               </td>
437 </tr>
438 <tr>
439 <td>
440                 <p>
441 </p>
442 <pre class="programlisting"><span class="identifier">a</span><span class="special">.</span><span class="identifier">available</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">ec</span><span class="special">);</span>
443 </pre>
444 <p>
445                 </p>
446               </td>
447 <td>
448                 <p>
449                   <code class="computeroutput"><span class="identifier">size_t</span></code>
450                 </p>
451               </td>
452 <td>
453                 <p>
454                   pre: <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.
455                 </p>
456               </td>
457 </tr>
458 <tr>
459 <td>
460                 <p>
461 </p>
462 <pre class="programlisting"><span class="keyword">const</span> <span class="identifier">X</span><span class="special">&amp;</span> <span class="identifier">u</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span>
463 <span class="keyword">const</span> <span class="identifier">X</span><span class="special">::</span><span class="identifier">implementation_type</span><span class="special">&amp;</span> <span class="identifier">v</span> <span class="special">=</span> <span class="identifier">b</span><span class="special">;</span>
464 <span class="identifier">u</span><span class="special">.</span><span class="identifier">available</span><span class="special">(</span><span class="identifier">v</span><span class="special">,</span> <span class="identifier">ec</span><span class="special">);</span>
465 </pre>
466 <p>
467                 </p>
468               </td>
469 <td>
470                 <p>
471                   <code class="computeroutput"><span class="identifier">size_t</span></code>
472                 </p>
473               </td>
474 <td>
475                 <p>
476                   pre: <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.
477                 </p>
478               </td>
479 </tr>
480 <tr>
481 <td>
482                 <p>
483 </p>
484 <pre class="programlisting"><span class="keyword">const</span> <span class="keyword">typename</span> <span class="identifier">Protocol</span><span class="special">::</span><span class="identifier">endpoint</span><span class="special">&amp;</span> <span class="identifier">u</span> <span class="special">=</span> <span class="identifier">e</span><span class="special">;</span>
485 <span class="identifier">a</span><span class="special">.</span><span class="identifier">bind</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">u</span><span class="special">,</span> <span class="identifier">ec</span><span class="special">);</span>
486 </pre>
487 <p>
488                 </p>
489               </td>
490 <td>
491                 <p>
492                   <code class="computeroutput"><span class="identifier">error_code</span></code>
493                 </p>
494               </td>
495 <td>
496                 <p>
497                   pre: <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.
498                 </p>
499               </td>
500 </tr>
501 <tr>
502 <td>
503                 <p>
504 </p>
505 <pre class="programlisting"><span class="identifier">a</span><span class="special">.</span><span class="identifier">shutdown</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">h</span><span class="special">,</span> <span class="identifier">ec</span><span class="special">);</span>
506 </pre>
507 <p>
508                 </p>
509               </td>
510 <td>
511                 <p>
512                   <code class="computeroutput"><span class="identifier">error_code</span></code>
513                 </p>
514               </td>
515 <td>
516                 <p>
517                   pre: <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.
518                 </p>
519               </td>
520 </tr>
521 <tr>
522 <td>
523                 <p>
524 </p>
525 <pre class="programlisting"><span class="identifier">a</span><span class="special">.</span><span class="identifier">local_endpoint</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">ec</span><span class="special">);</span>
526 </pre>
527 <p>
528                 </p>
529               </td>
530 <td>
531                 <p>
532                   <code class="computeroutput"><span class="identifier">Protocol</span><span class="special">::</span><span class="identifier">endpoint</span></code>
533                 </p>
534               </td>
535 <td>
536                 <p>
537                   pre: <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.
538                 </p>
539               </td>
540 </tr>
541 <tr>
542 <td>
543                 <p>
544 </p>
545 <pre class="programlisting"><span class="keyword">const</span> <span class="identifier">X</span><span class="special">&amp;</span> <span class="identifier">u</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span>
546 <span class="keyword">const</span> <span class="identifier">X</span><span class="special">::</span><span class="identifier">implementation_type</span><span class="special">&amp;</span> <span class="identifier">v</span> <span class="special">=</span> <span class="identifier">b</span><span class="special">;</span>
547 <span class="identifier">u</span><span class="special">.</span><span class="identifier">local_endpoint</span><span class="special">(</span><span class="identifier">v</span><span class="special">,</span> <span class="identifier">ec</span><span class="special">);</span>
548 </pre>
549 <p>
550                 </p>
551               </td>
552 <td>
553                 <p>
554                   <code class="computeroutput"><span class="identifier">Protocol</span><span class="special">::</span><span class="identifier">endpoint</span></code>
555                 </p>
556               </td>
557 <td>
558                 <p>
559                   pre: <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.
560                 </p>
561               </td>
562 </tr>
563 <tr>
564 <td>
565                 <p>
566 </p>
567 <pre class="programlisting"><span class="identifier">a</span><span class="special">.</span><span class="identifier">remote_endpoint</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">ec</span><span class="special">);</span>
568 </pre>
569 <p>
570                 </p>
571               </td>
572 <td>
573                 <p>
574                   <code class="computeroutput"><span class="identifier">Protocol</span><span class="special">::</span><span class="identifier">endpoint</span></code>
575                 </p>
576               </td>
577 <td>
578                 <p>
579                   pre: <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.
580                 </p>
581               </td>
582 </tr>
583 <tr>
584 <td>
585                 <p>
586 </p>
587 <pre class="programlisting"><span class="keyword">const</span> <span class="identifier">X</span><span class="special">&amp;</span> <span class="identifier">u</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span>
588 <span class="keyword">const</span> <span class="identifier">X</span><span class="special">::</span><span class="identifier">implementation_type</span><span class="special">&amp;</span> <span class="identifier">v</span> <span class="special">=</span> <span class="identifier">b</span><span class="special">;</span>
589 <span class="identifier">u</span><span class="special">.</span><span class="identifier">remote_endpoint</span><span class="special">(</span><span class="identifier">v</span><span class="special">,</span> <span class="identifier">ec</span><span class="special">);</span>
590 </pre>
591 <p>
592                 </p>
593               </td>
594 <td>
595                 <p>
596                   <code class="computeroutput"><span class="identifier">Protocol</span><span class="special">::</span><span class="identifier">endpoint</span></code>
597                 </p>
598               </td>
599 <td>
600                 <p>
601                   pre: <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.
602                 </p>
603               </td>
604 </tr>
605 <tr>
606 <td>
607                 <p>
608 </p>
609 <pre class="programlisting"><span class="keyword">const</span> <span class="keyword">typename</span> <span class="identifier">Protocol</span><span class="special">::</span><span class="identifier">endpoint</span><span class="special">&amp;</span> <span class="identifier">u</span> <span class="special">=</span> <span class="identifier">e</span><span class="special">;</span>
610 <span class="identifier">a</span><span class="special">.</span><span class="identifier">connect</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">u</span><span class="special">,</span> <span class="identifier">ec</span><span class="special">);</span>
611 </pre>
612 <p>
613                 </p>
614               </td>
615 <td>
616                 <p>
617                   <code class="computeroutput"><span class="identifier">error_code</span></code>
618                 </p>
619               </td>
620 <td>
621                 <p>
622                   pre: <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.
623                 </p>
624               </td>
625 </tr>
626 <tr>
627 <td>
628                 <p>
629 </p>
630 <pre class="programlisting"><span class="keyword">const</span> <span class="keyword">typename</span> <span class="identifier">Protocol</span><span class="special">::</span><span class="identifier">endpoint</span><span class="special">&amp;</span> <span class="identifier">u</span> <span class="special">=</span> <span class="identifier">e</span><span class="special">;</span>
631 <span class="identifier">a</span><span class="special">.</span><span class="identifier">async_connect</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">u</span><span class="special">,</span> <span class="identifier">ch</span><span class="special">);</span>
632 </pre>
633 <p>
634                 </p>
635               </td>
636 <td>
637               </td>
638 <td>
639                 <p>
640                   pre: <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>.<br>
641                   Initiates an asynchronous connect operation that is performed via
642                   the <code class="computeroutput"><span class="identifier">io_service</span></code>
643                   object <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">get_io_service</span><span class="special">()</span></code>
644                   and behaves according to <a class="link" href="asynchronous_operations.html" title="Requirements on asynchronous operations">asynchronous
645                   operation</a> requirements.
646                 </p>
647               </td>
648 </tr>
649 </tbody>
650 </table></div>
651 </div>
652 <br class="table-break">
653 </div>
654 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
655 <td align="left"></td>
656 <td align="right"><div class="copyright-footer">Copyright &#169; 2003-2012 Christopher M. Kohlhoff<p>
657         Distributed under the Boost Software License, Version 1.0. (See accompanying
658         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>)
659       </p>
660 </div></td>
661 </tr></table>
662 <hr>
663 <div class="spirit-nav">
664 <a accesskey="p" href="SocketAcceptorService.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="StreamDescriptorService.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
665 </div>
666 </body>
667 </html>