|
libhatchet
|
#include <hxtask_dag_node.hpp>
Public Member Functions | |
| hxtask_dag_node (void) | |
| void | add_successor (hxtask_dag_node *successor_, int priority_=0) |
| void | reset (void) noexcept |
| void | on_completion (hxtask_queue *q_) override |
| void | on_failure (hxtask_queue *q_) override |
| void | on_cancel (hxtask_queue *q_) override |
| Public Member Functions inherited from hxtask | |
| virtual bool | execute (hxtask_queue *)=0 |
| virtual const char * | get_label (void) const |
hxtask_dag_node<max_successors> - A hxtask subclass that implements DAG dependency tracking as a layer on top of hxtask_queue.
To connect nodes use add_successor before enqueueing roots (those with no predecessors). WARNING: The DAG is not intended to be modified once submitted as add_successor does not implement locking. Successor nodes are enqueued automatically once all their predecessors complete successfully. If any predecessor fails or is cancelled, all successors are cancelled: they receive on_cancel rather than being enqueued. Subclasses that override on_completion, on_failure, or on_cancel must call the corresponding hxtask_dag_node base method to preserve task propagation.
| hxtask_dag_node< max_successors_ >::hxtask_dag_node | ( | void | ) |
Constructs a node with no predecessors or successors.
| void hxtask_dag_node< max_successors_ >::add_successor | ( | hxtask_dag_node< max_successors_ > * | successor_, |
| int | priority_ = 0 ) |
Records a dependency: successor runs after this node completes, enqueued at priority.
Not thread safe, must be called before enqueueing any root nodes.
|
inlineoverridevirtual |
Cancels all successors.
Subclass overrides must call hxtask_dag_node::on_cancel(q_).
Reimplemented from hxtask.
|
inlineoverridevirtual |
Propagates successful completion to successors.
Subclass overrides must call hxtask_dag_node::on_completion(q_).
Reimplemented from hxtask.
|
inlineoverridevirtual |
Cancels all successors.
Subclass overrides must call hxtask_dag_node::on_failure(q_).
Reimplemented from hxtask.
|
inlinenoexcept |
Clears predecessors and successors.
WARNING: Do not use while the DAG is being executed.