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

join::join Constructor

Overloaded. Constructs a join messaging block.

join::~join Destructor

Destroys the join block.

Protected Methods

Name

Description

join::accept_message Method

Accepts a message that was offered by this join messaging block, transferring ownership to the caller.

join::consume_message Method

Consumes a message previously offered by the join messaging block and reserved by the target, transferring ownership to the caller.

join::link_target_notification Method

A callback that notifies that a new target has been linked to this join messaging block.

join::propagate_message Method

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.

join::propagate_to_any_targets Method

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.

join::release_message Method

Releases a previous message reservation. (Overrides source_block::release_message.)

join::reserve_message Method

Reserves a message previously offered by this join messaging block. (Overrides source_block::reserve_message.)

join::resume_propagation Method

Resumes propagation after a reservation has been released. (Overrides source_block::resume_propagation.)

Remarks

For more information, see Asynchronous Message Blocks.

Inheritance Hierarchy

ISource

ITarget

source_block

propagator_block

join

Requirements

Header: agents.h

Namespace: concurrency

See Also

Reference

concurrency Namespace

choice Class

multitype_join Class

join_type Enumeration