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

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
  3. <title>tbb::flow::interface6::buffer_node&lt; T, A &gt; Class Template Reference</title>
  4. <link href="doxygen.css" rel="stylesheet" type="text/css">
  5. <link href="tabs.css" rel="stylesheet" type="text/css">
  6. </head><body>
  7. <!-- Generated by Doxygen 1.4.7 -->
  8. <div class="tabs">
  9. <ul>
  10. <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
  11. <li><a href="modules.html"><span>Modules</span></a></li>
  12. <li><a href="namespaces.html"><span>Namespaces</span></a></li>
  13. <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
  14. <li><a href="files.html"><span>Files</span></a></li>
  15. <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
  16. </ul></div>
  17. <div class="tabs">
  18. <ul>
  19. <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
  20. <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
  21. <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
  22. </ul></div>
  23. <div class="nav">
  24. <a class="el" href="a00428.html">tbb</a>::<b>flow</b>::<b>interface6</b>::<a class="el" href="a00275.html">buffer_node</a></div>
  25. <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.
  26. <a href="#_details">More...</a>
  27. <p>
  28. <code>#include &lt;flow_graph.h&gt;</code>
  29. <p>
  30. <p>Inheritance diagram for tbb::flow::interface6::buffer_node&lt; T, A &gt;:
  31. <p><center><img src="a00275.png" usemap="#tbb::flow::interface6::buffer_node< T, A >_map" border="0" alt=""></center>
  32. <map name="tbb::flow::interface6::buffer_node< T, A >_map">
  33. <area href="a00301.html" alt="tbb::flow::interface6::graph_node" shape="rect" coords="0,0,352,24">
  34. <area href="a00333.html" alt="tbb::flow::interface6::receiver< T >" shape="rect" coords="362,0,714,24">
  35. <area href="a00339.html" alt="tbb::flow::interface6::sender< T >" shape="rect" coords="724,0,1076,24">
  36. <area href="a00324.html" alt="tbb::flow::interface6::priority_queue_node< T, Compare, A >" shape="rect" coords="181,112,533,136">
  37. <area href="a00325.html" alt="tbb::flow::interface6::queue_node< T, A >" shape="rect" coords="543,112,895,136">
  38. <area href="a00340.html" alt="tbb::flow::interface6::sequencer_node< T, A >" shape="rect" coords="543,168,895,192">
  39. </map>
  40. <a href="a00074.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
  41. <tr><td></td></tr>
  42. <tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
  43. <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="" -->
  44. typedef T&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html#334efb81b56a2f2b3ae08a16e8d65620">input_type</a></td></tr>
  45. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The input type of this receiver. <br></td></tr>
  46. <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="" -->
  47. typedef T&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html#089520db81f6a1551dc94c01efbdd7be">output_type</a></td></tr>
  48. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The output type of this sender. <br></td></tr>
  49. <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="" -->
  50. 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>
  51. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The predecessor type for this node. <br></td></tr>
  52. <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="" -->
  53. 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>
  54. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The successor type for this node. <br></td></tr>
  55. <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="" -->
  56. 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>
  57. <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
  58. <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)" -->
  59. &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>
  60. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor. <br></td></tr>
  61. <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)" -->
  62. &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>
  63. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy constructor. <br></td></tr>
  64. <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>
  65. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Adds a new successor. <a href="#f8bf4944ede4fc106423d67715beb695"></a><br></td></tr>
  66. <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>
  67. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Removes a successor. <a href="#2074da0e39b9477c32897d6e5786196f"></a><br></td></tr>
  68. <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>
  69. <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>
  70. <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>
  71. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reserves an item. <a href="#1cc889bb6c38bcb81757d0ebbc3a5e64"></a><br></td></tr>
  72. <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>
  73. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Release a reserved item. <a href="#2c8e8f2f5f4ff5be27136cc1184a3c3e"></a><br></td></tr>
  74. <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>
  75. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Consumes a reserved item. <a href="#8ef07c434eb763d947a7b4e80c086a49"></a><br></td></tr>
  76. <tr><td colspan="2"><br><h2>Protected Types</h2></td></tr>
  77. <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="" -->
  78. typedef size_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
  79. <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="" -->
  80. typedef internal::aggregating_functor&lt;<br>
  81. <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>
  82. <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="" -->
  83. &nbsp;</td><td class="memItemRight" valign="bottom"><b>reg_succ</b></td></tr>
  84. <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="" -->
  85. &nbsp;</td><td class="memItemRight" valign="bottom"><b>rem_succ</b></td></tr>
  86. <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="" -->
  87. &nbsp;</td><td class="memItemRight" valign="bottom"><b>req_item</b></td></tr>
  88. <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="" -->
  89. &nbsp;</td><td class="memItemRight" valign="bottom"><b>res_item</b></td></tr>
  90. <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="" -->
  91. &nbsp;</td><td class="memItemRight" valign="bottom"><b>rel_res</b></td></tr>
  92. <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="" -->
  93. &nbsp;</td><td class="memItemRight" valign="bottom"><b>con_res</b></td></tr>
  94. <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="" -->
  95. &nbsp;</td><td class="memItemRight" valign="bottom"><b>put_item</b></td></tr>
  96. <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="" -->
  97. &nbsp;</td><td class="memItemRight" valign="bottom"><b>try_fwd_task</b></td></tr>
  98. <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="" -->
  99. &nbsp;</td><td class="memItemRight" valign="bottom"><b>WAIT</b> = 0</td></tr>
  100. <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="" -->
  101. &nbsp;</td><td class="memItemRight" valign="bottom"><b>SUCCEEDED</b></td></tr>
  102. <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="" -->
  103. &nbsp;</td><td class="memItemRight" valign="bottom"><b>FAILED</b></td></tr>
  104. <tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><b>op_type</b> { <br>
  105. &nbsp;&nbsp;<b>reg_succ</b>,
  106. <b>rem_succ</b>,
  107. <b>req_item</b>,
  108. <b>res_item</b>,
  109. <br>
  110. &nbsp;&nbsp;<b>rel_res</b>,
  111. <b>con_res</b>,
  112. <b>put_item</b>,
  113. <b>try_fwd_task</b>
  114. <br>
  115. }</td></tr>
  116. <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,
  117. <b>SUCCEEDED</b>,
  118. <b>FAILED</b>
  119. }</td></tr>
  120. <tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
  121. <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)" -->
  122. virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><b>handle_operations</b> (buffer_operation *op_list)</td></tr>
  123. <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)" -->
  124. <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>
  125. <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)" -->
  126. bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>enqueue_forwarding_task</b> (buffer_operation &amp;op_data)</td></tr>
  127. <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="()" -->
  128. 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>
  129. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This is executed by an enqueued task, the "forwarder". <br></td></tr>
  130. <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)" -->
  131. 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>
  132. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Register successor. <br></td></tr>
  133. <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)" -->
  134. 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>
  135. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove successor. <br></td></tr>
  136. <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)" -->
  137. 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>
  138. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tries to forward valid items to successors. <br></td></tr>
  139. <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)" -->
  140. virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal_push</b> (buffer_operation *op)</td></tr>
  141. <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)" -->
  142. virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal_pop</b> (buffer_operation *op)</td></tr>
  143. <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)" -->
  144. virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal_reserve</b> (buffer_operation *op)</td></tr>
  145. <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)" -->
  146. virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal_consume</b> (buffer_operation *op)</td></tr>
  147. <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)" -->
  148. virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal_release</b> (buffer_operation *op)</td></tr>
  149. <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)" -->
  150. <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>
  151. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">receive an item, return a task *if possible <br></td></tr>
  152. <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="()" -->
  153. void&nbsp;</td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
  154. <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="()" -->
  155. void&nbsp;</td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> ()</td></tr>
  156. <tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
  157. <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="" -->
  158. internal::round_robin_cache&lt;<br>
  159. 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>
  160. <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="" -->
  161. <a class="el" href="a00349.html">task</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>my_parent</b></td></tr>
  162. <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="" -->
  163. bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>forwarder_busy</b></td></tr>
  164. <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="" -->
  165. internal::aggregator&lt; my_handler,<br>
  166. buffer_operation &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><b>my_aggregator</b></td></tr>
  167. <tr><td colspan="2"><br><h2>Friends</h2></td></tr>
  168. <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="" -->
  169. class&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal::forward_task_bypass&lt; buffer_node&lt; T, A &gt; &gt;</b></td></tr>
  170. <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="" -->
  171. class&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal::aggregating_functor&lt; my_class, buffer_operation &gt;</b></td></tr>
  172. <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="" -->
  173. class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html#621bab40a858d214db69ef08d88b67c1">run_and_put_task</a></td></tr>
  174. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">put item to successor; return task to run the successor if possible. <br></td></tr>
  175. <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="" -->
  176. class&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
  177. <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="" -->
  178. class&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
  179. <tr><td colspan="2"><br><h2>Classes</h2></td></tr>
  180. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>buffer_operation</b></td></tr>
  181. </table>
  182. <hr><a name="_details"></a><h2>Detailed Description</h2>
  183. <h3>template&lt;typename T, typename A = cache_aligned_allocator&lt;T&gt;&gt;<br>
  184. class tbb::flow::interface6::buffer_node&lt; T, A &gt;</h3>
  185. Forwards messages in arbitrary order.
  186. <p>
  187. <hr><h2>Member Function Documentation</h2>
  188. <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)" -->
  189. <div class="memitem">
  190. <div class="memproto">
  191. <div class="memtemplate">
  192. template&lt;typename T, typename A = cache_aligned_allocator&lt;T&gt;&gt; </div>
  193. <table class="memname">
  194. <tr>
  195. <td class="memname">bool <a class="el" href="a00275.html">tbb::flow::interface6::buffer_node</a>&lt; T, A &gt;::register_successor </td>
  196. <td>(</td>
  197. <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>
  198. <td class="paramname"> <em>r</em> </td>
  199. <td>&nbsp;)&nbsp;</td>
  200. <td width="100%"><code> [inline, virtual]</code></td>
  201. </tr>
  202. </table>
  203. </div>
  204. <div class="memdoc">
  205. <p>
  206. Adds a new successor.
  207. <p>
  208. Adds successor r to the list of successors; may forward tasks.
  209. <p>
  210. Implements <a class="el" href="a00339.html#68b8941ad77b9303cf3bcb8cf1f2d28a">tbb::flow::interface6::sender&lt; T &gt;</a>.
  211. </div>
  212. </div><p>
  213. <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)" -->
  214. <div class="memitem">
  215. <div class="memproto">
  216. <div class="memtemplate">
  217. template&lt;typename T, typename A = cache_aligned_allocator&lt;T&gt;&gt; </div>
  218. <table class="memname">
  219. <tr>
  220. <td class="memname">bool <a class="el" href="a00275.html">tbb::flow::interface6::buffer_node</a>&lt; T, A &gt;::remove_successor </td>
  221. <td>(</td>
  222. <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>
  223. <td class="paramname"> <em>r</em> </td>
  224. <td>&nbsp;)&nbsp;</td>
  225. <td width="100%"><code> [inline, virtual]</code></td>
  226. </tr>
  227. </table>
  228. </div>
  229. <div class="memdoc">
  230. <p>
  231. Removes a successor.
  232. <p>
  233. Removes successor r from the list of successors. It also calls r.remove_predecessor(*this) to remove this node as a predecessor.
  234. <p>
  235. Implements <a class="el" href="a00339.html#82f363bfb1738bb8789e167590b10ef9">tbb::flow::interface6::sender&lt; T &gt;</a>.
  236. </div>
  237. </div><p>
  238. <a class="anchor" name="8ef07c434eb763d947a7b4e80c086a49"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::try_consume" ref="8ef07c434eb763d947a7b4e80c086a49" args="()" -->
  239. <div class="memitem">
  240. <div class="memproto">
  241. <div class="memtemplate">
  242. template&lt;typename T, typename A = cache_aligned_allocator&lt;T&gt;&gt; </div>
  243. <table class="memname">
  244. <tr>
  245. <td class="memname">bool <a class="el" href="a00275.html">tbb::flow::interface6::buffer_node</a>&lt; T, A &gt;::try_consume </td>
  246. <td>(</td>
  247. <td class="paramname"> </td>
  248. <td>&nbsp;)&nbsp;</td>
  249. <td width="100%"><code> [inline, virtual]</code></td>
  250. </tr>
  251. </table>
  252. </div>
  253. <div class="memdoc">
  254. <p>
  255. Consumes a reserved item.
  256. <p>
  257. true = item is removed from sender and reservation removed
  258. <p>
  259. Reimplemented from <a class="el" href="a00339.html#7b840f50da117a0d6848707c1857ea2e">tbb::flow::interface6::sender&lt; T &gt;</a>.
  260. </div>
  261. </div><p>
  262. <a class="anchor" name="aeb8aec46ca99ca022356a792c46735e"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::try_get" ref="aeb8aec46ca99ca022356a792c46735e" args="(T &amp;v)" -->
  263. <div class="memitem">
  264. <div class="memproto">
  265. <div class="memtemplate">
  266. template&lt;typename T, typename A = cache_aligned_allocator&lt;T&gt;&gt; </div>
  267. <table class="memname">
  268. <tr>
  269. <td class="memname">bool <a class="el" href="a00275.html">tbb::flow::interface6::buffer_node</a>&lt; T, A &gt;::try_get </td>
  270. <td>(</td>
  271. <td class="paramtype">T &amp;&nbsp;</td>
  272. <td class="paramname"> <em>v</em> </td>
  273. <td>&nbsp;)&nbsp;</td>
  274. <td width="100%"><code> [inline, virtual]</code></td>
  275. </tr>
  276. </table>
  277. </div>
  278. <div class="memdoc">
  279. <p>
  280. Request an item from the <a class="el" href="a00275.html">buffer_node</a>.
  281. <p>
  282. true = v contains the returned item<br>
  283. false = no item has been returned
  284. <p>
  285. Reimplemented from <a class="el" href="a00339.html#922fb56b0aad090b90a98b7d56b76a59">tbb::flow::interface6::sender&lt; T &gt;</a>.
  286. </div>
  287. </div><p>
  288. <a class="anchor" name="2c8e8f2f5f4ff5be27136cc1184a3c3e"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::try_release" ref="2c8e8f2f5f4ff5be27136cc1184a3c3e" args="()" -->
  289. <div class="memitem">
  290. <div class="memproto">
  291. <div class="memtemplate">
  292. template&lt;typename T, typename A = cache_aligned_allocator&lt;T&gt;&gt; </div>
  293. <table class="memname">
  294. <tr>
  295. <td class="memname">bool <a class="el" href="a00275.html">tbb::flow::interface6::buffer_node</a>&lt; T, A &gt;::try_release </td>
  296. <td>(</td>
  297. <td class="paramname"> </td>
  298. <td>&nbsp;)&nbsp;</td>
  299. <td width="100%"><code> [inline, virtual]</code></td>
  300. </tr>
  301. </table>
  302. </div>
  303. <div class="memdoc">
  304. <p>
  305. Release a reserved item.
  306. <p>
  307. true = item has been released and so remains in sender
  308. <p>
  309. Reimplemented from <a class="el" href="a00339.html#27036b06d6a91e97007e14f400529199">tbb::flow::interface6::sender&lt; T &gt;</a>.
  310. </div>
  311. </div><p>
  312. <a class="anchor" name="1cc889bb6c38bcb81757d0ebbc3a5e64"></a><!-- doxytag: member="tbb::flow::interface6::buffer_node::try_reserve" ref="1cc889bb6c38bcb81757d0ebbc3a5e64" args="(T &amp;v)" -->
  313. <div class="memitem">
  314. <div class="memproto">
  315. <div class="memtemplate">
  316. template&lt;typename T, typename A = cache_aligned_allocator&lt;T&gt;&gt; </div>
  317. <table class="memname">
  318. <tr>
  319. <td class="memname">bool <a class="el" href="a00275.html">tbb::flow::interface6::buffer_node</a>&lt; T, A &gt;::try_reserve </td>
  320. <td>(</td>
  321. <td class="paramtype">T &amp;&nbsp;</td>
  322. <td class="paramname"> <em>v</em> </td>
  323. <td>&nbsp;)&nbsp;</td>
  324. <td width="100%"><code> [inline, virtual]</code></td>
  325. </tr>
  326. </table>
  327. </div>
  328. <div class="memdoc">
  329. <p>
  330. Reserves an item.
  331. <p>
  332. false = no item can be reserved<br>
  333. true = an item is reserved
  334. <p>
  335. Reimplemented from <a class="el" href="a00339.html#02c05b472271db1b68a48ea2618fa72f">tbb::flow::interface6::sender&lt; T &gt;</a>.
  336. </div>
  337. </div><p>
  338. <hr>The documentation for this class was generated from the following file:<ul>
  339. <li><a class="el" href="a00385.html">flow_graph.h</a></ul>
  340. <hr>
  341. <p></p>
  342. Copyright &copy; 2005-2013 Intel Corporation. All Rights Reserved.
  343. <p></p>
  344. Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
  345. registered trademarks or trademarks of Intel Corporation or its
  346. subsidiaries in the United States and other countries.
  347. <p></p>
  348. * Other names and brands may be claimed as the property of others.