<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.18"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Crashpad: crashpad::CompositeHTTPBodyStream Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="crashpad_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Crashpad
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.18 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespacecrashpad.html">crashpad</a></li><li class="navelem"><a class="el" href="classcrashpad_1_1CompositeHTTPBodyStream.html">CompositeHTTPBodyStream</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classcrashpad_1_1CompositeHTTPBodyStream-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">crashpad::CompositeHTTPBodyStream Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>An implementation of <a class="el" href="classcrashpad_1_1HTTPBodyStream.html" title="An interface to a stream that can be used for an HTTP request body.">HTTPBodyStream</a> that combines an array of several other <a class="el" href="classcrashpad_1_1HTTPBodyStream.html" title="An interface to a stream that can be used for an HTTP request body.">HTTPBodyStream</a> objects into a single, unified stream.  
 <a href="classcrashpad_1_1CompositeHTTPBodyStream.html#details">More...</a></p>

<p><code>#include &quot;util/net/http_body.h&quot;</code></p>
<div class="dynheader">
Inheritance diagram for crashpad::CompositeHTTPBodyStream:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classcrashpad_1_1CompositeHTTPBodyStream.png" usemap="#crashpad::CompositeHTTPBodyStream_map" alt=""/>
  <map id="crashpad::CompositeHTTPBodyStream_map" name="crashpad::CompositeHTTPBodyStream_map">
<area href="classcrashpad_1_1HTTPBodyStream.html" title="An interface to a stream that can be used for an HTTP request body." alt="crashpad::HTTPBodyStream" shape="rect" coords="0,0,228,24"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:ab9c0c8a6c40f9f02931a316c9566f639"><td class="memItemLeft" align="right" valign="top"><a id="ab9c0c8a6c40f9f02931a316c9566f639"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>PartsList</b> = std::vector&lt; <a class="el" href="classcrashpad_1_1HTTPBodyStream.html">HTTPBodyStream</a> * &gt;</td></tr>
<tr class="separator:ab9c0c8a6c40f9f02931a316c9566f639"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:acadd842a8a9d844fd13f482858290993"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CompositeHTTPBodyStream.html#acadd842a8a9d844fd13f482858290993">CompositeHTTPBodyStream</a> (const PartsList &amp;parts)</td></tr>
<tr class="memdesc:acadd842a8a9d844fd13f482858290993"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a stream from an array of other stream parts.  <a href="classcrashpad_1_1CompositeHTTPBodyStream.html#acadd842a8a9d844fd13f482858290993">More...</a><br /></td></tr>
<tr class="separator:acadd842a8a9d844fd13f482858290993"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66355480dd05beba77261f0a512d3e70"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacecrashpad.html#a25465a3a2d289a06addf93c346c6f917">FileOperationResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CompositeHTTPBodyStream.html#a66355480dd05beba77261f0a512d3e70">GetBytesBuffer</a> (uint8_t *buffer, size_t max_len) override</td></tr>
<tr class="memdesc:a66355480dd05beba77261f0a512d3e70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copies up to <em>max_len</em> bytes into the user-supplied buffer.  <a href="classcrashpad_1_1CompositeHTTPBodyStream.html#a66355480dd05beba77261f0a512d3e70">More...</a><br /></td></tr>
<tr class="separator:a66355480dd05beba77261f0a512d3e70"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>An implementation of <a class="el" href="classcrashpad_1_1HTTPBodyStream.html" title="An interface to a stream that can be used for an HTTP request body.">HTTPBodyStream</a> that combines an array of several other <a class="el" href="classcrashpad_1_1HTTPBodyStream.html" title="An interface to a stream that can be used for an HTTP request body.">HTTPBodyStream</a> objects into a single, unified stream. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="acadd842a8a9d844fd13f482858290993"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acadd842a8a9d844fd13f482858290993">&#9670;&nbsp;</a></span>CompositeHTTPBodyStream()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">crashpad::CompositeHTTPBodyStream::CompositeHTTPBodyStream </td>
          <td>(</td>
          <td class="paramtype">const PartsList &amp;&#160;</td>
          <td class="paramname"><em>parts</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Creates a stream from an array of other stream parts. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">parts</td><td>A vector of <a class="el" href="classcrashpad_1_1HTTPBodyStream.html" title="An interface to a stream that can be used for an HTTP request body.">HTTPBodyStream</a> objects, of which this object takes ownership, that will be represented as a single unified stream. Callers should not mutate the stream objects after passing them to an instance of this class. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a66355480dd05beba77261f0a512d3e70"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a66355480dd05beba77261f0a512d3e70">&#9670;&nbsp;</a></span>GetBytesBuffer()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespacecrashpad.html#a25465a3a2d289a06addf93c346c6f917">FileOperationResult</a> crashpad::CompositeHTTPBodyStream::GetBytesBuffer </td>
          <td>(</td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>max_len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Copies up to <em>max_len</em> bytes into the user-supplied buffer. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">buffer</td><td>A user-supplied buffer into which this method will copy bytes from the stream. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_len</td><td>The length (or size) of <em>buffer</em>. At most this many bytes will be copied.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>On success, a positive number indicating the number of bytes actually copied to <em>buffer</em>. On failure, a negative number. When the stream has no more data, returns <code>0</code>. </dd></dl>

<p>Implements <a class="el" href="classcrashpad_1_1HTTPBodyStream.html#aa6a460e23c34ff7b2edc056a5ffd11b2">crashpad::HTTPBodyStream</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>util/net/http_body.h</li>
<li>util/net/http_body.cc</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.18
</small></address>
</body>
</html>
