You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

408 lines
32 KiB

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>tbb::flow::interface6::buffer_node&lt; T, A &gt; Class Template Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul></div>
<div class="nav">
<a class="el" href="a00428.html">tbb</a>::<b>flow</b>::<b>interface6</b>::<a class="el" href="a00275.html">buffer_node</a></div>
<h1>tbb::flow::interface6::buffer_node&lt; T, A &gt; Class Template Reference</h1><!-- doxytag: class="tbb::flow::interface6::buffer_node" --><!-- doxytag: inherits="tbb::flow::interface6::graph_node,tbb::flow::interface6::receiver,tbb::flow::interface6::sender" -->Forwards messages in arbitrary order.
<a href="#_details">More...</a>
<p>
<code>#include &lt;flow_graph.h&gt;</code>
<p>
<p>Inheritance diagram for tbb::flow::interface6::buffer_node&lt; T, A &gt;:
<p><center><img src="a00275.png" usemap="#tbb::flow::interface6::buffer_node< T, A >_map" border="0" alt=""></center>
<map name="tbb::flow::interface6::buffer_node< T, A >_map">
<area href="a00301.html" alt="tbb::flow::interface6::graph_node" shape="rect" coords="0,0,352,24">
<area href="a00333.html" alt="tbb::flow::interface6::receiver< T >" shape="rect" coords="362,0,714,24">
<area href="a00339.html" alt="tbb::flow::interface6::sender< T >" shape="rect" coords="724,0,1076,24">
<area href="a00324.html" alt="tbb::flow::interface6::priority_queue_node< T, Compare, A >" shape="rect" coords="181,112,533,136">
<area href="a00325.html" alt="tbb::flow::interface6::queue_node< T, A >" shape="rect" coords="543,112,895,136">
<area href="a00340.html" alt="tbb::flow::interface6::sequencer_node< T, A >" shape="rect" coords="543,168,895,192">
</map>
<a href="a00074.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="334efb81b56a2f2b3ae08a16e8d65620"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::input_type" ref="334efb81b56a2f2b3ae08a16e8d65620" args="" -->
typedef T&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html#334efb81b56a2f2b3ae08a16e8d65620">input_type</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The input type of this receiver. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="089520db81f6a1551dc94c01efbdd7be"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::output_type" ref="089520db81f6a1551dc94c01efbdd7be" args="" -->
typedef T&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html#089520db81f6a1551dc94c01efbdd7be">output_type</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The output type of this sender. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5fb0ad03a822ca0fc34ad5d56a4093a2"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::predecessor_type" ref="5fb0ad03a822ca0fc34ad5d56a4093a2" args="" -->
typedef <a class="el" href="a00339.html">sender</a>&lt; <a class="el" href="a00275.html#334efb81b56a2f2b3ae08a16e8d65620">input_type</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html#5fb0ad03a822ca0fc34ad5d56a4093a2">predecessor_type</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The predecessor type for this node. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="66f7eda69b75e08f50726e50a11429cd"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::successor_type" ref="66f7eda69b75e08f50726e50a11429cd" args="" -->
typedef <a class="el" href="a00333.html">receiver</a>&lt; <a class="el" href="a00275.html#089520db81f6a1551dc94c01efbdd7be">output_type</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html#66f7eda69b75e08f50726e50a11429cd">successor_type</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The successor type for this node. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="17ee32d233db52b86256480d5f048e16"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::my_class" ref="17ee32d233db52b86256480d5f048e16" args="" -->
typedef <a class="el" href="a00275.html">buffer_node</a>&lt; T, A &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><b>my_class</b></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5fe4b79f780586ff66e002ce32a5c60d"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::buffer_node" ref="5fe4b79f780586ff66e002ce32a5c60d" args="(graph &amp;g)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html#5fe4b79f780586ff66e002ce32a5c60d">buffer_node</a> (<a class="el" href="a00300.html">graph</a> &amp;g)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="03ad7b85a8341437f584af06ad050cdc"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::buffer_node" ref="03ad7b85a8341437f584af06ad050cdc" args="(const buffer_node &amp;src)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html#03ad7b85a8341437f584af06ad050cdc">buffer_node</a> (const <a class="el" href="a00275.html">buffer_node</a> &amp;src)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy constructor. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html#f8bf4944ede4fc106423d67715beb695">register_successor</a> (<a class="el" href="a00333.html">receiver</a>&lt; <a class="el" href="a00275.html#089520db81f6a1551dc94c01efbdd7be">output_type</a> &gt; &amp;r)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Adds a new successor. <a href="#f8bf4944ede4fc106423d67715beb695"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html#2074da0e39b9477c32897d6e5786196f">remove_successor</a> (<a class="el" href="a00333.html">receiver</a>&lt; <a class="el" href="a00275.html#089520db81f6a1551dc94c01efbdd7be">output_type</a> &gt; &amp;r)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Removes a successor. <a href="#2074da0e39b9477c32897d6e5786196f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html#aeb8aec46ca99ca022356a792c46735e">try_get</a> (T &amp;v)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request an item from the <a class="el" href="a00275.html">buffer_node</a>. <a href="#aeb8aec46ca99ca022356a792c46735e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html#1cc889bb6c38bcb81757d0ebbc3a5e64">try_reserve</a> (T &amp;v)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reserves an item. <a href="#1cc889bb6c38bcb81757d0ebbc3a5e64"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html#2c8e8f2f5f4ff5be27136cc1184a3c3e">try_release</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Release a reserved item. <a href="#2c8e8f2f5f4ff5be27136cc1184a3c3e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html#8ef07c434eb763d947a7b4e80c086a49">try_consume</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Consumes a reserved item. <a href="#8ef07c434eb763d947a7b4e80c086a49"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Protected Types</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3bdeda814bba6d687b62449e8d7b8001"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::size_type" ref="3bdeda814bba6d687b62449e8d7b8001" args="" -->
typedef size_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5da41039fc224257fc16df21ea78351c"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::my_handler" ref="5da41039fc224257fc16df21ea78351c" args="" -->
typedef internal::aggregating_functor&lt;<br>
<a class="el" href="a00275.html">my_class</a>, buffer_operation &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><b>my_handler</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="27ef87d052ece9366a56e5dfd8017579ba61e9d48b022a45d302fb7cc2e99587"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::reg_succ" ref="27ef87d052ece9366a56e5dfd8017579ba61e9d48b022a45d302fb7cc2e99587" args="" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>reg_succ</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="27ef87d052ece9366a56e5dfd8017579e5c114ade89a63b1d44116994be56f94"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::rem_succ" ref="27ef87d052ece9366a56e5dfd8017579e5c114ade89a63b1d44116994be56f94" args="" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>rem_succ</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="27ef87d052ece9366a56e5dfd8017579b830235026f7286b15954d74559baeb8"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::req_item" ref="27ef87d052ece9366a56e5dfd8017579b830235026f7286b15954d74559baeb8" args="" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>req_item</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="27ef87d052ece9366a56e5dfd8017579014be13638194a9fe0b10201be74847e"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::res_item" ref="27ef87d052ece9366a56e5dfd8017579014be13638194a9fe0b10201be74847e" args="" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>res_item</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="27ef87d052ece9366a56e5dfd8017579d451e6807b6f8238c3fed708789c9fb3"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::rel_res" ref="27ef87d052ece9366a56e5dfd8017579d451e6807b6f8238c3fed708789c9fb3" args="" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>rel_res</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="27ef87d052ece9366a56e5dfd8017579b2a86824c712d448bd3ff7c6e905fb48"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::con_res" ref="27ef87d052ece9366a56e5dfd8017579b2a86824c712d448bd3ff7c6e905fb48" args="" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>con_res</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="27ef87d052ece9366a56e5dfd80175799f00b67eaae74451baf63ea2dc0cb94c"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::put_item" ref="27ef87d052ece9366a56e5dfd80175799f00b67eaae74451baf63ea2dc0cb94c" args="" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>put_item</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="27ef87d052ece9366a56e5dfd801757944e067a8959b08624d5675b29b4f344f"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::try_fwd_task" ref="27ef87d052ece9366a56e5dfd801757944e067a8959b08624d5675b29b4f344f" args="" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>try_fwd_task</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0ca181d774b321a511fd9a9653ce2a60f415a59924de2ce1c447c79a1b278a3a"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::WAIT" ref="0ca181d774b321a511fd9a9653ce2a60f415a59924de2ce1c447c79a1b278a3a" args="" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>WAIT</b> = 0</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0ca181d774b321a511fd9a9653ce2a60159bdd1eb0a3e1245f61a1e3bcca417f"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::SUCCEEDED" ref="0ca181d774b321a511fd9a9653ce2a60159bdd1eb0a3e1245f61a1e3bcca417f" args="" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>SUCCEEDED</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0ca181d774b321a511fd9a9653ce2a602c60f32df3cedd3c31dadd0086e5edc4"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::FAILED" ref="0ca181d774b321a511fd9a9653ce2a602c60f32df3cedd3c31dadd0086e5edc4" args="" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>FAILED</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><b>op_type</b> { <br>
&nbsp;&nbsp;<b>reg_succ</b>,
<b>rem_succ</b>,
<b>req_item</b>,
<b>res_item</b>,
<br>
&nbsp;&nbsp;<b>rel_res</b>,
<b>con_res</b>,
<b>put_item</b>,
<b>try_fwd_task</b>
<br>
}</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><b>op_stat</b> { <b>WAIT</b> = 0,
<b>SUCCEEDED</b>,
<b>FAILED</b>
}</td></tr>
<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c896b8640b606e49f369d1260c041ded"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::handle_operations" ref="c896b8640b606e49f369d1260c041ded" args="(buffer_operation *op_list)" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><b>handle_operations</b> (buffer_operation *op_list)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="285804d036b538fe1d656fa829672b71"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::grab_forwarding_task" ref="285804d036b538fe1d656fa829672b71" args="(buffer_operation &amp;op_data)" -->
<a class="el" href="a00349.html">task</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>grab_forwarding_task</b> (buffer_operation &amp;op_data)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9369eb4fe99cdfe534b99102b069ea43"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::enqueue_forwarding_task" ref="9369eb4fe99cdfe534b99102b069ea43" args="(buffer_operation &amp;op_data)" -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>enqueue_forwarding_task</b> (buffer_operation &amp;op_data)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8954338d1a7740f9be80455ba27e8eed"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::forward_task" ref="8954338d1a7740f9be80455ba27e8eed" args="()" -->
virtual <a class="el" href="a00349.html">task</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html#8954338d1a7740f9be80455ba27e8eed">forward_task</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This is executed by an enqueued task, the "forwarder". <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="df21388252b8963e839dca29d2c67ea5"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::internal_reg_succ" ref="df21388252b8963e839dca29d2c67ea5" args="(buffer_operation *op)" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html#df21388252b8963e839dca29d2c67ea5">internal_reg_succ</a> (buffer_operation *op)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Register successor. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6b6cf76dff80fd679251da93351c1291"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::internal_rem_succ" ref="6b6cf76dff80fd679251da93351c1291" args="(buffer_operation *op)" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html#6b6cf76dff80fd679251da93351c1291">internal_rem_succ</a> (buffer_operation *op)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove successor. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bc6ef82fe9c28ace2ef6b78abb43ffb8"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::internal_forward_task" ref="bc6ef82fe9c28ace2ef6b78abb43ffb8" args="(buffer_operation *op)" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html#bc6ef82fe9c28ace2ef6b78abb43ffb8">internal_forward_task</a> (buffer_operation *op)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tries to forward valid items to successors. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="58c70e13ecd40cdaa59cda059e68de51"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::internal_push" ref="58c70e13ecd40cdaa59cda059e68de51" args="(buffer_operation *op)" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal_push</b> (buffer_operation *op)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="035cbd758a1a28317ba951e2447e0826"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::internal_pop" ref="035cbd758a1a28317ba951e2447e0826" args="(buffer_operation *op)" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal_pop</b> (buffer_operation *op)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4072ad4d1b320d584ea837048d6e4130"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::internal_reserve" ref="4072ad4d1b320d584ea837048d6e4130" args="(buffer_operation *op)" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal_reserve</b> (buffer_operation *op)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1177d6a157c14cdbfd7d4b05f01605a5"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::internal_consume" ref="1177d6a157c14cdbfd7d4b05f01605a5" args="(buffer_operation *op)" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal_consume</b> (buffer_operation *op)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ceeec6c56ae8e16effb3fd187e83d958"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::internal_release" ref="ceeec6c56ae8e16effb3fd187e83d958" args="(buffer_operation *op)" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal_release</b> (buffer_operation *op)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="84d939049fa8c3205aec91ced0980e03"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::try_put_task" ref="84d939049fa8c3205aec91ced0980e03" args="(const T &amp;t)" -->
<a class="el" href="a00349.html">task</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html#84d939049fa8c3205aec91ced0980e03">try_put_task</a> (const T &amp;t)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">receive an item, return a task *if possible <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c79745aba84a849f0e84a12ce51f80ec"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::reset" ref="c79745aba84a849f0e84a12ce51f80ec" args="()" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2380fb8ae7d2e567a1ca9a032d96b4d3"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::reset_receiver" ref="2380fb8ae7d2e567a1ca9a032d96b4d3" args="()" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> ()</td></tr>
<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="28807215994d4c7d3725fac693b37ec1"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::my_successors" ref="28807215994d4c7d3725fac693b37ec1" args="" -->
internal::round_robin_cache&lt;<br>
T, <a class="el" href="a00317.html">null_rw_mutex</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><b>my_successors</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b569eeae467185c45ea78ee1ab41a215"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::my_parent" ref="b569eeae467185c45ea78ee1ab41a215" args="" -->
<a class="el" href="a00349.html">task</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>my_parent</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5e90b3f77cbfac9fd5fb4d53456955d4"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::forwarder_busy" ref="5e90b3f77cbfac9fd5fb4d53456955d4" args="" -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>forwarder_busy</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4d008669d152fe291079f097da72ec74"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::my_aggregator" ref="4d008669d152fe291079f097da72ec74" args="" -->
internal::aggregator&lt; my_handler,<br>
buffer_operation &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><b>my_aggregator</b></td></tr>
<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d217b28a982bca8ba8f50175c3e91621"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::internal::forward_task_bypass&lt; buffer_node&lt; T, A &gt; &gt;" ref="d217b28a982bca8ba8f50175c3e91621" args="" -->
class&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal::forward_task_bypass&lt; buffer_node&lt; T, A &gt; &gt;</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0b5526a5033ff7acc64681cff9ad76b0"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::internal::aggregating_functor&lt; my_class, buffer_operation &gt;" ref="0b5526a5033ff7acc64681cff9ad76b0" args="" -->
class&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal::aggregating_functor&lt; my_class, buffer_operation &gt;</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="621bab40a858d214db69ef08d88b67c1"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::run_and_put_task" ref="621bab40a858d214db69ef08d88b67c1" args="" -->
class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html#621bab40a858d214db69ef08d88b67c1">run_and_put_task</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">put item to successor; return task to run the successor if possible. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e4fa30d87bc0bfa80942f97a8d58f1bd"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::internal::broadcast_cache" ref="e4fa30d87bc0bfa80942f97a8d58f1bd" args="" -->
class&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="31ba00ea3e3e5a421b38840bd0dc2589"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::internal::round_robin_cache" ref="31ba00ea3e3e5a421b38840bd0dc2589" args="" -->
class&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>buffer_operation</b></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<h3>template&lt;typename T, typename A = cache_aligned_allocator&lt;T&gt;&gt;<br>
class tbb::flow::interface6::buffer_node&lt; T, A &gt;</h3>
Forwards messages in arbitrary order.
<p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="f8bf4944ede4fc106423d67715beb695"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::register_successor" ref="f8bf4944ede4fc106423d67715beb695" args="(receiver&lt; output_type &gt; &amp;r)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T, typename A = cache_aligned_allocator&lt;T&gt;&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="a00275.html">tbb::flow::interface6::buffer_node</a>&lt; T, A &gt;::register_successor </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00333.html">receiver</a>&lt; <a class="el" href="a00275.html#089520db81f6a1551dc94c01efbdd7be">output_type</a> &gt; &amp;&nbsp;</td>
<td class="paramname"> <em>r</em> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"><code> [inline, virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Adds a new successor.
<p>
Adds successor r to the list of successors; may forward tasks.
<p>
Implements <a class="el" href="a00339.html#68b8941ad77b9303cf3bcb8cf1f2d28a">tbb::flow::interface6::sender&lt; T &gt;</a>.
</div>
</div><p>
<a class="anchor" name="2074da0e39b9477c32897d6e5786196f"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::remove_successor" ref="2074da0e39b9477c32897d6e5786196f" args="(receiver&lt; output_type &gt; &amp;r)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T, typename A = cache_aligned_allocator&lt;T&gt;&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="a00275.html">tbb::flow::interface6::buffer_node</a>&lt; T, A &gt;::remove_successor </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00333.html">receiver</a>&lt; <a class="el" href="a00275.html#089520db81f6a1551dc94c01efbdd7be">output_type</a> &gt; &amp;&nbsp;</td>
<td class="paramname"> <em>r</em> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"><code> [inline, virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Removes a successor.
<p>
Removes successor r from the list of successors. It also calls r.remove_predecessor(*this) to remove this node as a predecessor.
<p>
Implements <a class="el" href="a00339.html#82f363bfb1738bb8789e167590b10ef9">tbb::flow::interface6::sender&lt; T &gt;</a>.
</div>
</div><p>
<a class="anchor" name="8ef07c434eb763d947a7b4e80c086a49"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::try_consume" ref="8ef07c434eb763d947a7b4e80c086a49" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T, typename A = cache_aligned_allocator&lt;T&gt;&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="a00275.html">tbb::flow::interface6::buffer_node</a>&lt; T, A &gt;::try_consume </td>
<td>(</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"><code> [inline, virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Consumes a reserved item.
<p>
true = item is removed from sender and reservation removed
<p>
Reimplemented from <a class="el" href="a00339.html#7b840f50da117a0d6848707c1857ea2e">tbb::flow::interface6::sender&lt; T &gt;</a>.
</div>
</div><p>
<a class="anchor" name="aeb8aec46ca99ca022356a792c46735e"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::try_get" ref="aeb8aec46ca99ca022356a792c46735e" args="(T &amp;v)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T, typename A = cache_aligned_allocator&lt;T&gt;&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="a00275.html">tbb::flow::interface6::buffer_node</a>&lt; T, A &gt;::try_get </td>
<td>(</td>
<td class="paramtype">T &amp;&nbsp;</td>
<td class="paramname"> <em>v</em> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"><code> [inline, virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Request an item from the <a class="el" href="a00275.html">buffer_node</a>.
<p>
true = v contains the returned item<br>
false = no item has been returned
<p>
Reimplemented from <a class="el" href="a00339.html#922fb56b0aad090b90a98b7d56b76a59">tbb::flow::interface6::sender&lt; T &gt;</a>.
</div>
</div><p>
<a class="anchor" name="2c8e8f2f5f4ff5be27136cc1184a3c3e"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::try_release" ref="2c8e8f2f5f4ff5be27136cc1184a3c3e" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T, typename A = cache_aligned_allocator&lt;T&gt;&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="a00275.html">tbb::flow::interface6::buffer_node</a>&lt; T, A &gt;::try_release </td>
<td>(</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"><code> [inline, virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Release a reserved item.
<p>
true = item has been released and so remains in sender
<p>
Reimplemented from <a class="el" href="a00339.html#27036b06d6a91e97007e14f400529199">tbb::flow::interface6::sender&lt; T &gt;</a>.
</div>
</div><p>
<a class="anchor" name="1cc889bb6c38bcb81757d0ebbc3a5e64"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::try_reserve" ref="1cc889bb6c38bcb81757d0ebbc3a5e64" args="(T &amp;v)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T, typename A = cache_aligned_allocator&lt;T&gt;&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="a00275.html">tbb::flow::interface6::buffer_node</a>&lt; T, A &gt;::try_reserve </td>
<td>(</td>
<td class="paramtype">T &amp;&nbsp;</td>
<td class="paramname"> <em>v</em> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"><code> [inline, virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Reserves an item.
<p>
false = no item can be reserved<br>
true = an item is reserved
<p>
Reimplemented from <a class="el" href="a00339.html#02c05b472271db1b68a48ea2618fa72f">tbb::flow::interface6::sender&lt; T &gt;</a>.
</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="a00385.html">flow_graph.h</a></ul>
<hr>
<p></p>
Copyright &copy; 2005-2013 Intel Corporation. All Rights Reserved.
<p></p>
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
registered trademarks or trademarks of Intel Corporation or its
subsidiaries in the United States and other countries.
<p></p>
* Other names and brands may be claimed as the property of others.