#include <flow_graph.h>
Inheritance diagram for tbb::flow::interface6::buffer_node< T, A >:

Public Types | |
| typedef T | input_type |
| The input type of this receiver. | |
| typedef T | output_type |
| The output type of this sender. | |
| typedef sender< input_type > | predecessor_type |
| The predecessor type for this node. | |
| typedef receiver< output_type > | successor_type |
| The successor type for this node. | |
| typedef buffer_node< T, A > | my_class |
Public Member Functions | |
| buffer_node (graph &g) | |
| Constructor. | |
| buffer_node (const buffer_node &src) | |
| Copy constructor. | |
| bool | register_successor (receiver< output_type > &r) |
| Adds a new successor. | |
| bool | remove_successor (receiver< output_type > &r) |
| Removes a successor. | |
| bool | try_get (T &v) |
| Request an item from the buffer_node. | |
| bool | try_reserve (T &v) |
| Reserves an item. | |
| bool | try_release () |
| Release a reserved item. | |
| bool | try_consume () |
| Consumes a reserved item. | |
Protected Types | |
| typedef size_t | size_type |
|
typedef internal::aggregating_functor< my_class, buffer_operation > | my_handler |
| reg_succ | |
| rem_succ | |
| req_item | |
| res_item | |
| rel_res | |
| con_res | |
| put_item | |
| try_fwd_task | |
| WAIT = 0 | |
| SUCCEEDED | |
| FAILED | |
| enum | op_type { reg_succ, rem_succ, req_item, res_item, rel_res, con_res, put_item, try_fwd_task } |
| enum | op_stat { WAIT = 0, SUCCEEDED, FAILED } |
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. | |
| 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 () |
| void | reset_receiver () |
Protected Attributes | |
|
internal::round_robin_cache< T, null_rw_mutex > | my_successors |
| task * | my_parent |
| bool | forwarder_busy |
|
internal::aggregator< my_handler, buffer_operation > | my_aggregator |
Friends | |
| class | internal::forward_task_bypass< buffer_node< T, A > > |
| class | internal::aggregating_functor< my_class, buffer_operation > |
| class | run_and_put_task |
| put item to successor; return task to run the successor if possible. | |
| class | internal::broadcast_cache |
| class | internal::round_robin_cache |
Classes | |
| class | buffer_operation |
| bool tbb::flow::interface6::buffer_node< T, A >::register_successor | ( | receiver< output_type > & | r | ) | [inline, virtual] |
Adds a new successor.
Adds successor r to the list of successors; may forward tasks.
Implements tbb::flow::interface6::sender< T >.
| bool tbb::flow::interface6::buffer_node< T, A >::remove_successor | ( | receiver< output_type > & | r | ) | [inline, virtual] |
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::interface6::sender< T >.
| bool tbb::flow::interface6::buffer_node< T, A >::try_consume | ( | ) | [inline, virtual] |
Consumes a reserved item.
true = item is removed from sender and reservation removed
Reimplemented from tbb::flow::interface6::sender< T >.
| bool tbb::flow::interface6::buffer_node< T, A >::try_get | ( | T & | v | ) | [inline, virtual] |
Request an item from the buffer_node.
true = v contains the returned item
false = no item has been returned
Reimplemented from tbb::flow::interface6::sender< T >.
| bool tbb::flow::interface6::buffer_node< T, A >::try_release | ( | ) | [inline, virtual] |
Release a reserved item.
true = item has been released and so remains in sender
Reimplemented from tbb::flow::interface6::sender< T >.
| bool tbb::flow::interface6::buffer_node< T, A >::try_reserve | ( | T & | v | ) | [inline, virtual] |
Reserves an item.
false = no item can be reserved
true = an item is reserved
Reimplemented from tbb::flow::interface6::sender< T >.