join Class
A join messaging block is a single-target, multi-source, ordered propagator_block which combines together messages of type _Type from each of its sources.
template<
class _Type,
join_type _Jtype = non_greedy
>
class join : public propagator_block<single_link_registry<ITarget<std::vector<_Type>>>, multi_link_registry<ISource<_Type>>>;
Parameters
_Type
The payload type of the messages joined and propagated by the block._Jtype
The kind of join block this is, either greedy or non_greedy
Members
Public Constructors
Name |
Description |
---|---|
Overloaded. Constructs a join messaging block. |
|
Destroys the join block. |
Protected Methods
Name |
Description |
---|---|
Accepts a message that was offered by this join messaging block, transferring ownership to the caller. |
|
Consumes a message previously offered by the join messaging block and reserved by the target, transferring ownership to the caller. |
|
A callback that notifies that a new target has been linked to this join messaging block. |
|
Asynchronously passes a message from an ISource block to this join messaging block. It is invoked by the propagate method, when called by a source block. |
|
Constructs an output message containing an input message from each source when they have all propagated a message. Sends this output message out to each of its targets. |
|
Releases a previous message reservation. (Overrides source_block::release_message.) |
|
Reserves a message previously offered by this join messaging block. (Overrides source_block::reserve_message.) |
|
Resumes propagation after a reservation has been released. (Overrides source_block::resume_propagation.) |
Remarks
For more information, see Asynchronous Message Blocks.
Inheritance Hierarchy
join
Requirements
Header: agents.h
Namespace: concurrency