Imported Upstream version 1.57.0
[platform/upstream/boost.git] / doc / html / boost_asio / reference / SerialPortService.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>Serial port service requirements</title>
5 <link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.78.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="SeqPacketSocketService.html" title="Sequenced packet socket service requirements">
10 <link rel="next" href="Service.html" title="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="SeqPacketSocketService.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="Service.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.SerialPortService"></a><a class="link" href="SerialPortService.html" title="Serial port service requirements">Serial port service
28       requirements</a>
29 </h3></div></div></div>
30 <p>
31         A serial port service must meet the requirements for an <a class="link" href="IoObjectService.html" title="I/O object service requirements">I/O
32         object service</a> with support for movability, as well as the additional
33         requirements listed below.
34       </p>
35 <p>
36         In the table below, <code class="computeroutput"><span class="identifier">X</span></code> denotes
37         a serial port service class, <code class="computeroutput"><span class="identifier">a</span></code>
38         and <code class="computeroutput"><span class="identifier">ao</span></code> denote values of type
39         <code class="computeroutput"><span class="identifier">X</span></code>, <code class="computeroutput"><span class="identifier">d</span></code>
40         denotes a serial port device name of type <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></code>,
41         <code class="computeroutput"><span class="identifier">b</span></code> and <code class="computeroutput"><span class="identifier">c</span></code>
42         denote values of type <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">n</span></code>
43         denotes a value of type <code class="computeroutput"><span class="identifier">X</span><span class="special">::</span><span class="identifier">native_handle_type</span></code>,
44         <code class="computeroutput"><span class="identifier">ec</span></code> denotes a value of type
45         <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="SettableSerialPortOption.html" title="Settable serial port option requirements"><code class="computeroutput"><span class="identifier">SettableSerialPortOption</span></code></a> requirements,
46         <code class="computeroutput"><span class="identifier">g</span></code> denotes a value meeting
47         <a class="link" href="GettableSerialPortOption.html" title="Gettable serial port option requirements"><code class="computeroutput"><span class="identifier">GettableSerialPortOption</span></code></a> requirements,
48         <code class="computeroutput"><span class="identifier">mb</span></code> denotes a value satisfying
49         <a class="link" href="MutableBufferSequence.html" title="Mutable buffer sequence requirements">mutable buffer
50         sequence</a> requirements, <code class="computeroutput"><span class="identifier">rh</span></code>
51         denotes a value meeting <a class="link" href="ReadHandler.html" title="Read handler requirements"><code class="computeroutput"><span class="identifier">ReadHandler</span></code></a> requirements, <code class="computeroutput"><span class="identifier">cb</span></code> denotes a value satisfying <a class="link" href="ConstBufferSequence.html" title="Constant buffer sequence requirements">constant
52         buffer sequence</a> requirements, and <code class="computeroutput"><span class="identifier">wh</span></code>
53         denotes a value meeting <a class="link" href="WriteHandler.html" title="Write handler requirements"><code class="computeroutput"><span class="identifier">WriteHandler</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.SerialPortService.t0"></a><p class="title"><b>Table&#160;25.&#160;SerialPortService requirements</b></p>
59 <div class="table-contents"><table class="table" summary="SerialPortService 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 serial port.
94                   Must 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="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&amp;</span> <span class="identifier">u</span> <span class="special">=</span> <span class="identifier">d</span><span class="special">;</span>
177 <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">u</span><span class="special">,</span> <span class="identifier">ec</span><span class="special">);</span>
178 </pre>
179 <p>
180                 </p>
181               </td>
182 <td>
183                 <p>
184                   <code class="computeroutput"><span class="identifier">error_code</span></code>
185                 </p>
186               </td>
187 <td>
188                 <p>
189                   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>
190                   <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>.
191                 </p>
192               </td>
193 </tr>
194 <tr>
195 <td>
196                 <p>
197 </p>
198 <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">n</span><span class="special">,</span> <span class="identifier">ec</span><span class="special">);</span>
199 </pre>
200 <p>
201                 </p>
202               </td>
203 <td>
204                 <p>
205                   <code class="computeroutput"><span class="identifier">error_code</span></code>
206                 </p>
207               </td>
208 <td>
209                 <p>
210                   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>
211                   <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>.
212                 </p>
213               </td>
214 </tr>
215 <tr>
216 <td>
217                 <p>
218 </p>
219 <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>
220 </pre>
221 <p>
222                 </p>
223               </td>
224 <td>
225                 <p>
226                   <code class="computeroutput"><span class="keyword">bool</span></code>
227                 </p>
228               </td>
229 <td>
230               </td>
231 </tr>
232 <tr>
233 <td>
234                 <p>
235 </p>
236 <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>
237 <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>
238 <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>
239 </pre>
240 <p>
241                 </p>
242               </td>
243 <td>
244                 <p>
245                   <code class="computeroutput"><span class="keyword">bool</span></code>
246                 </p>
247               </td>
248 <td>
249               </td>
250 </tr>
251 <tr>
252 <td>
253                 <p>
254 </p>
255 <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>
256 </pre>
257 <p>
258                 </p>
259               </td>
260 <td>
261                 <p>
262                   <code class="computeroutput"><span class="identifier">error_code</span></code>
263                 </p>
264               </td>
265 <td>
266                 <p>
267                   If <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">()</span></code>
268                   is true, causes any outstanding asynchronous operations to complete
269                   as soon as possible. Handlers for cancelled operations shall be
270                   passed the error code <code class="computeroutput"><span class="identifier">error</span><span class="special">::</span><span class="identifier">operation_aborted</span></code>.<br>
271                   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>.
272                 </p>
273               </td>
274 </tr>
275 <tr>
276 <td>
277                 <p>
278 </p>
279 <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>
280 </pre>
281 <p>
282                 </p>
283               </td>
284 <td>
285                 <p>
286                   <code class="computeroutput"><span class="identifier">X</span><span class="special">::</span><span class="identifier">native_handle_type</span></code>
287                 </p>
288               </td>
289 <td>
290               </td>
291 </tr>
292 <tr>
293 <td>
294                 <p>
295 </p>
296 <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>
297 </pre>
298 <p>
299                 </p>
300               </td>
301 <td>
302                 <p>
303                   <code class="computeroutput"><span class="identifier">error_code</span></code>
304                 </p>
305               </td>
306 <td>
307                 <p>
308                   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>
309                   Causes any outstanding asynchronous operations to complete as soon
310                   as possible. Handlers for cancelled operations shall be passed
311                   the error code <code class="computeroutput"><span class="identifier">error</span><span class="special">::</span><span class="identifier">operation_aborted</span></code>.
312                 </p>
313               </td>
314 </tr>
315 <tr>
316 <td>
317                 <p>
318 </p>
319 <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>
320 </pre>
321 <p>
322                 </p>
323               </td>
324 <td>
325                 <p>
326                   <code class="computeroutput"><span class="identifier">error_code</span></code>
327                 </p>
328               </td>
329 <td>
330                 <p>
331                   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>.
332                 </p>
333               </td>
334 </tr>
335 <tr>
336 <td>
337                 <p>
338 </p>
339 <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>
340 </pre>
341 <p>
342                 </p>
343               </td>
344 <td>
345                 <p>
346                   <code class="computeroutput"><span class="identifier">error_code</span></code>
347                 </p>
348               </td>
349 <td>
350                 <p>
351                   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>.
352                 </p>
353               </td>
354 </tr>
355 <tr>
356 <td>
357                 <p>
358 </p>
359 <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>
360 <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>
361 <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>
362 </pre>
363 <p>
364                 </p>
365               </td>
366 <td>
367                 <p>
368                   <code class="computeroutput"><span class="identifier">error_code</span></code>
369                 </p>
370               </td>
371 <td>
372                 <p>
373                   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>.
374                 </p>
375               </td>
376 </tr>
377 <tr>
378 <td>
379                 <p>
380 </p>
381 <pre class="programlisting"><span class="identifier">a</span><span class="special">.</span><span class="identifier">send_break</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">ec</span><span class="special">);</span>
382 </pre>
383 <p>
384                 </p>
385               </td>
386 <td>
387                 <p>
388                   <code class="computeroutput"><span class="identifier">error_code</span></code>
389                 </p>
390               </td>
391 <td>
392                 <p>
393                   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>.
394                 </p>
395               </td>
396 </tr>
397 <tr>
398 <td>
399                 <p>
400                   <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">read_some</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
401                   <span class="identifier">mb</span><span class="special">,</span>
402                   <span class="identifier">ec</span><span class="special">);</span></code>
403                 </p>
404               </td>
405 <td>
406                 <p>
407                   <code class="computeroutput"><span class="identifier">size_t</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>.<br>
413                   <br> Reads one or more bytes of data from a serial port <code class="computeroutput"><span class="identifier">b</span></code>.<br> <br> The mutable buffer
414                   sequence <code class="computeroutput"><span class="identifier">mb</span></code> specifies
415                   memory where the data should be placed. The operation shall always
416                   fill a buffer in the sequence completely before proceeding to the
417                   next.<br> <br> If successful, returns the number of bytes read.
418                   Otherwise returns <code class="computeroutput"><span class="number">0</span></code>.
419                   If the total size of all buffers in the sequence <code class="computeroutput"><span class="identifier">mb</span></code> is <code class="computeroutput"><span class="number">0</span></code>,
420                   the function shall return <code class="computeroutput"><span class="number">0</span></code>
421                   immediately.<br> <br> If the operation completes due to graceful
422                   connection closure by the peer, the operation shall fail with
423                   <code class="computeroutput"><span class="identifier">error</span><span class="special">::</span><span class="identifier">eof</span></code>.
424                 </p>
425               </td>
426 </tr>
427 <tr>
428 <td>
429                 <p>
430                   <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">async_read_some</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
431                   <span class="identifier">mb</span><span class="special">,</span>
432                   <span class="identifier">rh</span><span class="special">);</span></code>
433                 </p>
434               </td>
435 <td>
436                 <p>
437                   <code class="computeroutput"><span class="keyword">void</span></code>
438                 </p>
439               </td>
440 <td>
441                 <p>
442                   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>
443                   <br> Initiates an asynchronous operation to read one or more
444                   bytes of data from a serial port <code class="computeroutput"><span class="identifier">b</span></code>.
445                   The operation is performed via the <code class="computeroutput"><span class="identifier">io_service</span></code>
446                   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>
447                   and behaves according to <a class="link" href="asynchronous_operations.html" title="Requirements on asynchronous operations">asynchronous
448                   operation</a> requirements.<br> <br> The mutable buffer
449                   sequence <code class="computeroutput"><span class="identifier">mb</span></code> specifies
450                   memory where the data should be placed. The operation shall always
451                   fill a buffer in the sequence completely before proceeding to the
452                   next.<br> <br> The implementation shall maintain one or more
453                   copies of <code class="computeroutput"><span class="identifier">mb</span></code> until
454                   such time as the read operation no longer requires access to the
455                   memory specified by the buffers in the sequence. The program must
456                   ensure the memory is valid until:<br> <br> &#8212; the last copy of
457                   <code class="computeroutput"><span class="identifier">mb</span></code> is destroyed,
458                   or<br> <br> &#8212; the handler for the asynchronous operation is invoked,<br>
459                   <br> whichever comes first. If the total size of all buffers
460                   in the sequence <code class="computeroutput"><span class="identifier">mb</span></code>
461                   is <code class="computeroutput"><span class="number">0</span></code>, the asynchronous
462                   read operation shall complete immediately and pass <code class="computeroutput"><span class="number">0</span></code> as the argument to the handler
463                   that specifies the number of bytes read.<br> <br> If the operation
464                   completes due to graceful connection closure by the peer, the operation
465                   shall fail with <code class="computeroutput"><span class="identifier">error</span><span class="special">::</span><span class="identifier">eof</span></code>.<br>
466                   <br> If the operation completes successfully, the <code class="computeroutput"><span class="identifier">ReadHandler</span></code> object <code class="computeroutput"><span class="identifier">rh</span></code> is invoked with the number
467                   of bytes transferred. Otherwise it is invoked with <code class="computeroutput"><span class="number">0</span></code>.
468                 </p>
469               </td>
470 </tr>
471 <tr>
472 <td>
473                 <p>
474                   <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">write_some</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
475                   <span class="identifier">cb</span><span class="special">,</span>
476                   <span class="identifier">ec</span><span class="special">);</span></code>
477                 </p>
478               </td>
479 <td>
480                 <p>
481                   <code class="computeroutput"><span class="identifier">size_t</span></code>
482                 </p>
483               </td>
484 <td>
485                 <p>
486                   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>
487                   <br> Writes one or more bytes of data to a serial port <code class="computeroutput"><span class="identifier">b</span></code>.<br> <br> The constant
488                   buffer sequence <code class="computeroutput"><span class="identifier">cb</span></code>
489                   specifies memory where the data to be written is located. The operation
490                   shall always write a buffer in the sequence completely before proceeding
491                   to the next.<br> <br> If successful, returns the number of
492                   bytes written. Otherwise returns <code class="computeroutput"><span class="number">0</span></code>.
493                   If the total size of all buffers in the sequence <code class="computeroutput"><span class="identifier">cb</span></code> is <code class="computeroutput"><span class="number">0</span></code>,
494                   the function shall return <code class="computeroutput"><span class="number">0</span></code>
495                   immediately.
496                 </p>
497               </td>
498 </tr>
499 <tr>
500 <td>
501                 <p>
502                   <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">async_write_some</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
503                   <span class="identifier">cb</span><span class="special">,</span>
504                   <span class="identifier">wh</span><span class="special">);</span></code>
505                 </p>
506               </td>
507 <td>
508                 <p>
509                   <code class="computeroutput"><span class="keyword">void</span></code>
510                 </p>
511               </td>
512 <td>
513                 <p>
514                   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>
515                   <br> Initiates an asynchronous operation to write one or more
516                   bytes of data to a serial port <code class="computeroutput"><span class="identifier">b</span></code>.
517                   The operation is performed via the <code class="computeroutput"><span class="identifier">io_service</span></code>
518                   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>
519                   and behaves according to <a class="link" href="asynchronous_operations.html" title="Requirements on asynchronous operations">asynchronous
520                   operation</a> requirements.<br> <br> The constant buffer
521                   sequence <code class="computeroutput"><span class="identifier">cb</span></code> specifies
522                   memory where the data to be written is located. The operation shall
523                   always write a buffer in the sequence completely before proceeding
524                   to the next.<br> <br> The implementation shall maintain one
525                   or more copies of <code class="computeroutput"><span class="identifier">cb</span></code>
526                   until such time as the write operation no longer requires access
527                   to the memory specified by the buffers in the sequence. The program
528                   must ensure the memory is valid until:<br> <br> &#8212; the last copy
529                   of <code class="computeroutput"><span class="identifier">cb</span></code> is destroyed,
530                   or<br> <br> &#8212; the handler for the asynchronous operation is invoked,<br>
531                   <br> whichever comes first. If the total size of all buffers
532                   in the sequence <code class="computeroutput"><span class="identifier">cb</span></code>
533                   is <code class="computeroutput"><span class="number">0</span></code>, the asynchronous
534                   operation shall complete immediately and pass <code class="computeroutput"><span class="number">0</span></code>
535                   as the argument to the handler that specifies the number of bytes
536                   read.<br> <br> If the operation completes successfully, the
537                   <code class="computeroutput"><span class="identifier">WriteHandler</span></code> object
538                   <code class="computeroutput"><span class="identifier">wh</span></code> is invoked with
539                   the number of bytes transferred. Otherwise it is invoked with
540                   <code class="computeroutput"><span class="number">0</span></code>.
541                 </p>
542               </td>
543 </tr>
544 </tbody>
545 </table></div>
546 </div>
547 <br class="table-break">
548 </div>
549 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
550 <td align="left"></td>
551 <td align="right"><div class="copyright-footer">Copyright &#169; 2003-2014 Christopher M. Kohlhoff<p>
552         Distributed under the Boost Software License, Version 1.0. (See accompanying
553         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>)
554       </p>
555 </div></td>
556 </tr></table>
557 <hr>
558 <div class="spirit-nav">
559 <a accesskey="p" href="SeqPacketSocketService.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="Service.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
560 </div>
561 </body>
562 </html>