Provides storage for notifiers associated with a edge version of a task. Defines operations to add a new notifier and flush (i.e., invoke) notifiers when the corresponding data flow is triggered.
More...
|
|
| notifier_list (notifier_list &&other) |
| |
|
bool | empty_notifications (void) const |
| | Return true if there are no notifiers in list. False otherwise.
|
| |
| void | cleanup_notifications (void) |
| | Called by edge_entry destructor to explicit delete notifiers when they have been kept for PARAGRAPH persistency support. For incrementally destroyed PARAGRAPHs, this is a noop. More...
|
| |
|
void | clear_flow (void) |
| |
|
bool | test_flow (void) const |
| |
|
bool | test_flushing (void) const |
| |
|
|
notifier_list & | operator= (notifier_list const &) |
| |
|
| notifier_list (notifier_list const &) |
| |
| template<typename NotifierInvoker > |
| void | flush_notifications (NotifierInvoker const &invoker, const bool b_persistent) |
| | Invoke all notifier in the list, deleting them afterwords as part of incremental PARAGRAPH destruction, unless persistency is enabled. More...
|
| |
| template<typename NotifierInvoker > |
| void | add_notifier_impl (NotifierInvoker const &invoker, Notifier const ¬ifier, const bool b_persistent) |
| | Add a new notifier to the list, possibly invoking it immediately if the associated data flow was previously triggered. More...
|
| |
|
void | set_flow (void) |
| |
|
void | clear_flushing (void) |
| |
|
void | set_flushing (void) |
| |
|
|
typedef notifier_entry< Notifier, boost::intrusive::slist_base_hook<> > | notifier_entry_t |
| |
|
typedef boost::intrusive::slist< notifier_entry_t, boost::intrusive::constant_time_size< false >, boost::intrusive::cache_last< true > > | notifier_list_t |
| |
|
|
notifier_list_t | m_notifications |
| |
template<typename Notifier>
struct stapl::detail::notifier_list< Notifier >
Provides storage for notifiers associated with a edge version of a task. Defines operations to add a new notifier and flush (i.e., invoke) notifiers when the corresponding data flow is triggered.
- Template Parameters
-
| Notifier | The notifier type stored by the list. No specific function operator signature is assumed; this detail is abstracted by the NotifierInvoker template parameter of methods that may need invoke notifier objects. |
- See also
- edge_version_entry
-
remote_edge_version_entry
◆ flush_notifications()
template<typename Notifier>
template<typename NotifierInvoker >
Invoke all notifier in the list, deleting them afterwords as part of incremental PARAGRAPH destruction, unless persistency is enabled.
- Parameters
-
| invoker | Higher order function object which is responsible for calling the notifier with whatever arguments are necessary. |
| b_persistent | Denotes whether persistency is enabled in the associated PARAGRAPH. Guards the deletion of a notifier after it is invoked. |
This protected method is used by derived classes to implement their set_value methods (which are called by the edge_entry when the corresponding data flow is locally triggered.
◆ add_notifier_impl()
template<typename Notifier>
template<typename NotifierInvoker >
| void stapl::detail::notifier_list< Notifier >::add_notifier_impl |
( |
NotifierInvoker const & |
invoker, |
|
|
Notifier const & |
notifier, |
|
|
const bool |
b_persistent |
|
) |
| |
|
protected |
Add a new notifier to the list, possibly invoking it immediately if the associated data flow was previously triggered.
- Parameters
-
| invoker | Higher order function object which is responsible for calling the notifier with whatever arguments are necessary. |
| notifier | The edge notifier that tied to the data flow this notifier list is a part of. |
| b_persistent | Denotes whether persistency is enabled in the associated PARAGRAPH. |
This protected method is used by derived classes to implement their add_notifier methods. The derived classes construct the appropriate invoker.
Note that even if flow is previously set, an entry may be created to either (a) allow subsequent persistent PARAGRAPH invocations or (b) maintain notifier ordering if a notifier flush is in progress.
◆ cleanup_notifications()
template<typename Notifier>
Called by edge_entry destructor to explicit delete notifiers when they have been kept for PARAGRAPH persistency support. For incrementally destroyed PARAGRAPHs, this is a noop.
- See also
- edge_entry::~edge_entry
The documentation for this struct was generated from the following file: