<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>write (3 of 6 overloads)</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="../../../boost_asio.html" title="Boost.Asio">
<link rel="up" href="../write.html" title="write">
<link rel="prev" href="overload2.html" title="write (2 of 6 overloads)">
<link rel="next" href="overload4.html" title="write (4 of 6 overloads)">
</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="overload2.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../write.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="overload4.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_asio.reference.write.overload3"></a><a class="link" href="overload3.html" title="write (3 of 6 overloads)">write (3 of 6
        overloads)</a>
</h4></div></div></div>
<p>
          Write a certain amount of data to a stream before returning.
        </p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span>
    <span class="keyword">typename</span> <a class="link" href="../SyncWriteStream.html" title="Buffer-oriented synchronous write stream requirements">SyncWriteStream</a><span class="special">,</span>
    <span class="keyword">typename</span> <a class="link" href="../ConstBufferSequence.html" title="Constant buffer sequence requirements">ConstBufferSequence</a><span class="special">,</span>
    <span class="keyword">typename</span> <span class="identifier">CompletionCondition</span><span class="special">&gt;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">write</span><span class="special">(</span>
    <span class="identifier">SyncWriteStream</span> <span class="special">&amp;</span> <span class="identifier">s</span><span class="special">,</span>
    <span class="keyword">const</span> <span class="identifier">ConstBufferSequence</span> <span class="special">&amp;</span> <span class="identifier">buffers</span><span class="special">,</span>
    <span class="identifier">CompletionCondition</span> <span class="identifier">completion_condition</span><span class="special">,</span>
    <span class="identifier">boost</span><span class="special">::</span><span class="identifier">system</span><span class="special">::</span><span class="identifier">error_code</span> <span class="special">&amp;</span> <span class="identifier">ec</span><span class="special">);</span>
</pre>
<p>
          This function is used to write a certain number of bytes of data to a stream.
          The call will block until one of the following conditions is true:
        </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
              All of the data in the supplied buffers has been written. That is,
              the bytes transferred is equal to the sum of the buffer sizes.
            </li>
<li class="listitem">
              The completion_condition function object returns 0.
            </li>
</ul></div>
<p>
          This operation is implemented in terms of zero or more calls to the stream's
          write_some function.
        </p>
<a name="boost_asio.reference.write.overload3.parameters"></a><h6>
<a name="id1398540"></a>
          <a class="link" href="overload3.html#boost_asio.reference.write.overload3.parameters">Parameters</a>
        </h6>
<div class="variablelist">
<p class="title"><b></b></p>
<dl>
<dt><span class="term">s</span></dt>
<dd><p>
                The stream to which the data is to be written. The type must support
                the SyncWriteStream concept.
              </p></dd>
<dt><span class="term">buffers</span></dt>
<dd><p>
                One or more buffers containing the data to be written. The sum of
                the buffer sizes indicates the maximum number of bytes to write to
                the stream.
              </p></dd>
<dt><span class="term">completion_condition</span></dt>
<dd>
<p>
                The function object to be called to determine whether the write operation
                is complete. The signature of the function object must be: 
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">completion_condition</span><span class="special">(</span>
  <span class="comment">// Result of latest write_some operation.
</span>  <span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">system</span><span class="special">::</span><span class="identifier">error_code</span><span class="special">&amp;</span> <span class="identifier">error</span><span class="special">,</span>

  <span class="comment">// Number of bytes transferred so far.
</span>  <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">bytes_transferred</span>
<span class="special">);</span> 
</pre>
<p>
                A return value of 0 indicates that the write operation is complete.
                A non-zero return value indicates the maximum number of bytes to
                be written on the next call to the stream's write_some function.
              </p>
</dd>
<dt><span class="term">ec</span></dt>
<dd><p>
                Set to indicate what error occurred, if any.
              </p></dd>
</dl>
</div>
<a name="boost_asio.reference.write.overload3.return_value"></a><h6>
<a name="id1398744"></a>
          <a class="link" href="overload3.html#boost_asio.reference.write.overload3.return_value">Return
          Value</a>
        </h6>
<p>
          The number of bytes written. If an error occurs, returns the total number
          of bytes successfully transferred prior to the error.
        </p>
</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 &#169; 2003 - 2010 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="overload2.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../write.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="overload4.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
