<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>async_read_until (1 of 4 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="../async_read_until.html" title="async_read_until">
<link rel="prev" href="../async_read_until.html" title="async_read_until">
<link rel="next" href="overload2.html" title="async_read_until (2 of 4 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="../async_read_until.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../async_read_until.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="overload2.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.async_read_until.overload1"></a><a class="link" href="overload1.html" title="async_read_until (1 of 4 overloads)">async_read_until
        (1 of 4 overloads)</a>
</h4></div></div></div>
<p>
          Start an asynchronous operation to read data into a streambuf until it
          contains a specified delimiter.
        </p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span>
    <span class="keyword">typename</span> <a class="link" href="../AsyncReadStream.html" title="Buffer-oriented asynchronous read stream requirements">AsyncReadStream</a><span class="special">,</span>
    <span class="keyword">typename</span> <span class="identifier">Allocator</span><span class="special">,</span>
    <span class="keyword">typename</span> <a class="link" href="../ReadHandler.html" title="Read handler requirements">ReadHandler</a><span class="special">&gt;</span>
<span class="keyword">void</span> <span class="identifier">async_read_until</span><span class="special">(</span>
    <span class="identifier">AsyncReadStream</span> <span class="special">&amp;</span> <span class="identifier">s</span><span class="special">,</span>
    <span class="identifier">boost</span><span class="special">::</span><span class="identifier">asio</span><span class="special">::</span><span class="identifier">basic_streambuf</span><span class="special">&lt;</span> <span class="identifier">Allocator</span> <span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">b</span><span class="special">,</span>
    <span class="keyword">char</span> <span class="identifier">delim</span><span class="special">,</span>
    <span class="identifier">ReadHandler</span> <span class="identifier">handler</span><span class="special">);</span>
</pre>
<p>
          This function is used to asynchronously read data into the specified streambuf
          until the streambuf's get area contains the specified delimiter. The function
          call always returns immediately. The asynchronous operation will continue
          until one of the following conditions is true:
        </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
              The get area of the streambuf contains the specified delimiter.
            </li>
<li class="listitem">
              An error occurred.
            </li>
</ul></div>
<p>
          This operation is implemented in terms of zero or more calls to the stream's
          async_read_some function, and is known as a <span class="bold"><strong>composed
          operation</strong></span>. If the streambuf's get area already contains the
          delimiter, this asynchronous operation completes immediately. The program
          must ensure that the stream performs no other read operations (such as
          async_read, async_read_until, the stream's async_read_some function, or
          any other composed operations that perform reads) until this operation
          completes.
        </p>
<a name="boost_asio.reference.async_read_until.overload1.parameters"></a><h6>
<a name="id878798"></a>
          <a class="link" href="overload1.html#boost_asio.reference.async_read_until.overload1.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 from which the data is to be read. The type must support
                the AsyncReadStream concept.
              </p></dd>
<dt><span class="term">b</span></dt>
<dd><p>
                A streambuf object into which the data will be read. Ownership of
                the streambuf is retained by the caller, which must guarantee that
                it remains valid until the handler is called.
              </p></dd>
<dt><span class="term">delim</span></dt>
<dd><p>
                The delimiter character.
              </p></dd>
<dt><span class="term">handler</span></dt>
<dd>
<p>
                The handler to be called when the read operation completes. Copies
                will be made of the handler as required. The function signature of
                the handler must be: 
</p>
<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">handler</span><span class="special">(</span>
  <span class="comment">// Result of 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">// The number of bytes in the streambuf's get
</span>  <span class="comment">// area up to and including the delimiter.
</span>  <span class="comment">// 0 if an error occurred.
</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>
                Regardless of whether the asynchronous operation completes immediately
                or not, the handler will not be invoked from within this function.
                Invocation of the handler will be performed in a manner equivalent
                to using <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">asio</span><span class="special">::</span><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">post</span><span class="special">()</span></code>.
              </p>
</dd>
</dl>
</div>
<a name="boost_asio.reference.async_read_until.overload1.remarks"></a><h6>
<a name="id879048"></a>
          <a class="link" href="overload1.html#boost_asio.reference.async_read_until.overload1.remarks">Remarks</a>
        </h6>
<p>
          After a successful async_read_until operation, the streambuf may contain
          additional data beyond the delimiter. An application will typically leave
          that data in the streambuf for a subsequent async_read_until operation
          to examine.
        </p>
<a name="boost_asio.reference.async_read_until.overload1.example"></a><h6>
<a name="id879077"></a>
          <a class="link" href="overload1.html#boost_asio.reference.async_read_until.overload1.example">Example</a>
        </h6>
<p>
          To asynchronously read data into a streambuf until a newline is encountered:
        </p>
<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">asio</span><span class="special">::</span><span class="identifier">streambuf</span> <span class="identifier">b</span><span class="special">;</span>
<span class="special">...</span>
<span class="keyword">void</span> <span class="identifier">handler</span><span class="special">(</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">e</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">size</span><span class="special">)</span>
<span class="special">{</span>
  <span class="keyword">if</span> <span class="special">(!</span><span class="identifier">e</span><span class="special">)</span>
  <span class="special">{</span>
    <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span> <span class="identifier">is</span><span class="special">(&amp;</span><span class="identifier">b</span><span class="special">);</span>
    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">line</span><span class="special">;</span>
    <span class="identifier">std</span><span class="special">::</span><span class="identifier">getline</span><span class="special">(</span><span class="identifier">is</span><span class="special">,</span> <span class="identifier">line</span><span class="special">);</span>
    <span class="special">...</span>
  <span class="special">}</span>
<span class="special">}</span>
<span class="special">...</span>
<span class="identifier">boost</span><span class="special">::</span><span class="identifier">asio</span><span class="special">::</span><span class="identifier">async_read_until</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="identifier">b</span><span class="special">,</span> <span class="char">'\n'</span><span class="special">,</span> <span class="identifier">handler</span><span class="special">);</span> 
</pre>
<p>
          After the <code class="computeroutput"><span class="identifier">async_read_until</span></code>
          operation completes successfully, the buffer <code class="computeroutput"><span class="identifier">b</span></code>
          contains the delimiter:
        </p>
<pre class="programlisting"><span class="special">{</span> <span class="char">'a'</span><span class="special">,</span> <span class="char">'b'</span><span class="special">,</span> <span class="special">...,</span> <span class="char">'c'</span><span class="special">,</span> <span class="char">'\n'</span><span class="special">,</span> <span class="char">'d'</span><span class="special">,</span> <span class="char">'e'</span><span class="special">,</span> <span class="special">...</span> <span class="special">}</span> 
</pre>
<p>
          The call to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">getline</span></code> then extracts the data up to
          and including the delimiter, so that the string <code class="computeroutput"><span class="identifier">line</span></code>
          contains:
        </p>
<pre class="programlisting"><span class="special">{</span> <span class="char">'a'</span><span class="special">,</span> <span class="char">'b'</span><span class="special">,</span> <span class="special">...,</span> <span class="char">'c'</span><span class="special">,</span> <span class="char">'\n'</span> <span class="special">}</span> 
</pre>
<p>
          The remaining data is left in the buffer <code class="computeroutput"><span class="identifier">b</span></code>
          as follows:
        </p>
<pre class="programlisting"><span class="special">{</span> <span class="char">'d'</span><span class="special">,</span> <span class="char">'e'</span><span class="special">,</span> <span class="special">...</span> <span class="special">}</span> 
</pre>
<p>
          This data may be the start of a new line, to be extracted by a subsequent
          <code class="computeroutput"><span class="identifier">async_read_until</span></code> operation.
        </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="../async_read_until.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../async_read_until.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="overload2.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
