Forwards messages in arbitrary order. More...
#include <flow_graph.h>
 
  
 | Classes | |
| class | buffer_operation | 
| Public Types | |
| typedef T | input_type | 
| typedef T | output_type | 
| typedef sender< input_type > | predecessor_type | 
| typedef receiver< output_type > | successor_type | 
| typedef buffer_node< T, A > | my_class | 
| typedef receiver< input_type > ::predecessor_list_type | predecessor_list_type | 
| typedef sender< output_type > ::successor_list_type | successor_list_type | 
|  Public Types inherited from tbb::flow::interface7::receiver< T > | |
| typedef T | input_type | 
| The input type of this receiver. | |
| typedef sender< T > | predecessor_type | 
| The predecessor type for this node. | |
| typedef internal::edge_container < predecessor_type > | built_predecessors_type | 
| typedef built_predecessors_type::edge_list_type | predecessor_list_type | 
|  Public Types inherited from tbb::flow::interface7::sender< T > | |
| typedef T | output_type | 
| The output type of this sender. | |
| typedef receiver< T > | successor_type | 
| The successor type for this node. | |
| typedef internal::edge_container < successor_type > | built_successors_type | 
| interface to record edges for traversal & deletion | |
| typedef built_successors_type::edge_list_type | successor_list_type | 
| Public Member Functions | |
| buffer_node (graph &g) | |
| Constructor. | |
| buffer_node (const buffer_node &src) | |
| Copy constructor. | |
| void | set_name (const char *name) | 
| bool | register_successor (successor_type &r) | 
| Adds a new successor.  More... | |
| void | internal_add_built_successor (successor_type &r) | 
| void | internal_delete_built_successor (successor_type &r) | 
| void | internal_add_built_predecessor (predecessor_type &p) | 
| void | internal_delete_built_predecessor (predecessor_type &p) | 
| size_t | predecessor_count () | 
| size_t | successor_count () | 
| void | copy_predecessors (predecessor_list_type &v) | 
| void | copy_successors (successor_list_type &v) | 
| bool | remove_successor (successor_type &r) | 
| Removes a successor.  More... | |
| bool | try_get (T &v) | 
| Request an item from the buffer_node.  More... | |
| bool | try_reserve (T &v) | 
| Reserves an item.  More... | |
| bool | try_release () | 
| Release a reserved item.  More... | |
| bool | try_consume () | 
| Consumes a reserved item.  More... | |
| void | extract () | 
|  Public Member Functions inherited from tbb::flow::interface7::graph_node | |
| graph_node (graph &g) | |
|  Public Member Functions inherited from tbb::flow::interface7::receiver< T > | |
| virtual | ~receiver () | 
| Destructor. | |
| bool | try_put (const T &t) | 
| Put an item to the receiver. | |
| virtual bool | register_predecessor (predecessor_type &) | 
| Add a predecessor to the node. | |
| virtual bool | remove_predecessor (predecessor_type &) | 
| Remove a predecessor from the node. | |
| virtual void | copy_predecessors (predecessor_list_type &)=0 | 
| Protected Types | |
| enum | op_type { reg_succ, rem_succ, req_item, res_item, rel_res, con_res, put_item, try_fwd_task, add_blt_succ, del_blt_succ, add_blt_pred, del_blt_pred, blt_succ_cnt, blt_pred_cnt, blt_succ_cpy, blt_pred_cpy } | 
| enum | op_stat { WAIT =0, SUCCEEDED, FAILED } | 
| typedef size_t | size_type | 
| typedef internal::aggregating_functor < my_class, buffer_operation > | my_handler | 
| typedef sender< T > ::built_successors_type | built_successors_type | 
| typedef receiver< T > ::built_predecessors_type | built_predecessors_type | 
| Protected Member Functions | |
| virtual void | handle_operations (buffer_operation *op_list) | 
| task * | grab_forwarding_task (buffer_operation &op_data) | 
| bool | enqueue_forwarding_task (buffer_operation &op_data) | 
| virtual task * | forward_task () | 
| This is executed by an enqueued task, the "forwarder". | |
| virtual void | internal_reg_succ (buffer_operation *op) | 
| Register successor. | |
| virtual void | internal_rem_succ (buffer_operation *op) | 
| Remove successor. | |
| built_successors_type & | built_successors () | 
| virtual void | internal_add_built_succ (buffer_operation *op) | 
| virtual void | internal_del_built_succ (buffer_operation *op) | 
| built_predecessors_type & | built_predecessors () | 
| virtual void | internal_add_built_pred (buffer_operation *op) | 
| virtual void | internal_del_built_pred (buffer_operation *op) | 
| virtual void | internal_succ_cnt (buffer_operation *op) | 
| virtual void | internal_pred_cnt (buffer_operation *op) | 
| virtual void | internal_copy_succs (buffer_operation *op) | 
| virtual void | internal_copy_preds (buffer_operation *op) | 
| virtual void | internal_forward_task (buffer_operation *op) | 
| Tries to forward valid items to successors. | |
| virtual void | internal_push (buffer_operation *op) | 
| virtual void | internal_pop (buffer_operation *op) | 
| virtual void | internal_reserve (buffer_operation *op) | 
| virtual void | internal_consume (buffer_operation *op) | 
| virtual void | internal_release (buffer_operation *op) | 
| task * | try_put_task (const T &t) | 
| receive an item, return a task *if possible | |
| void | reset_receiver (__TBB_PFG_RESET_ARG(reset_flags)) | 
| void | reset_node (__TBB_PFG_RESET_ARG(reset_flags f)) | 
|  Protected Member Functions inherited from tbb::flow::interface7::graph_node | |
| virtual void | reset_node (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 | 
|  Protected Member Functions inherited from tbb::flow::interface7::receiver< T > | |
| virtual void | reset_receiver (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 | 
| virtual bool | is_continue_receiver () | 
| Protected Attributes | |
| internal::round_robin_cache< T, null_rw_mutex > | my_successors | 
| internal::edge_container < predecessor_type > | my_built_predecessors | 
| bool | forwarder_busy | 
| internal::aggregator < my_handler, buffer_operation > | my_aggregator | 
|  Protected Attributes inherited from tbb::flow::interface7::graph_node | |
| graph & | my_graph | 
| graph_node * | next | 
| graph_node * | prev | 
Forwards messages in arbitrary order.
| 
 | inlinevirtual | 
Adds a new successor.
Adds successor r to the list of successors; may forward tasks.
Implements tbb::flow::interface7::sender< T >.
| 
 | inlinevirtual | 
Removes a successor.
Removes successor r from the list of successors. It also calls r.remove_predecessor(*this) to remove this node as a predecessor.
Implements tbb::flow::interface7::sender< T >.
References tbb::flow::interface7::receiver< T >::remove_predecessor().
| 
 | inlinevirtual | 
Consumes a reserved item.
true = item is removed from sender and reservation removed
Reimplemented from tbb::flow::interface7::sender< T >.
| 
 | inlinevirtual | 
Request an item from the buffer_node.
true = v contains the returned item
 false = no item has been returned 
Reimplemented from tbb::flow::interface7::sender< T >.
| 
 | inlinevirtual | 
Release a reserved item.
true = item has been released and so remains in sender
Reimplemented from tbb::flow::interface7::sender< T >.
| 
 | inlinevirtual | 
Reserves an item.
false = no item can be reserved
 true = an item is reserved 
Reimplemented from tbb::flow::interface7::sender< T >.