ITarget Class

 

The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The ITarget class is the interface for all target blocks. Target blocks consume messages offered to them by ISource blocks.

template<class T>
class ITarget;

Parameters

T
The data type of the payload within the messages accepted by the target block.

Public Typedefs

NameDescription
filter_methodThe signature of any method used by the block that returns a bool value to determine whether an offered message should be accepted.
typeA type alias for T.

Public Constructors

NameDescription
ITarget::~ITarget DestructorDestroys the ITarget object.

Public Methods

NameDescription
ITarget::propagate MethodWhen overridden in a derived class, asynchronously passes a message from a source block to this target block.
ITarget::send MethodWhen overridden in a derived class, synchronously passes a message to the target block.
ITarget::supports_anonymous_source MethodWhen overridden in a derived class, returns true or false depending on whether the message block accepts messages offered by a source that is not linked to it. If the overridden method returns true, the target cannot postpone an offered message, as consumption of a postponed message at a later time requires the source to be identified in its sourse link registry.

Protected Methods

NameDescription
ITarget::link_source MethodWhen overridden in a derived class, links a specified source block to this ITarget block.
ITarget::unlink_source MethodWhen overridden in a derived class, unlinks a specified source block from this ITarget block.
ITarget::unlink_sources MethodWhen overridden in a derived class, unlinks all source blocks from this ITarget block.

For more information, see Asynchronous Message Blocks.

ITarget

Header: agents.h

Namespace: concurrency

Destroys the ITarget object.

virtual ~ITarget();

When overridden in a derived class, links a specified source block to this ITarget block.

virtual void link_source(_Inout_ ISource<T>* _PSource) = 0;

Parameters

_PSource
The ISource block being linked to this ITarget block.

Remarks

This function should not be called directly on an ITarget block. Blocks should be connected together using the link_target method on ISource blocks, which will invoke the link_source method on the corresponding target.

When overridden in a derived class, asynchronously passes a message from a source block to this target block.

virtual message_status propagate(
    _Inout_opt_ message<T>* _PMessage,
    _Inout_opt_ ISource<T>* _PSource) = 0;

Parameters

_PMessage
A pointer to the message object.

_PSource
A pointer to the source block offering the message.

Return Value

A message_status indication of what the target decided to do with the message.

Remarks

The method throws an invalid_argument exception if either the _PMessage or _PSource parameter is NULL.

When overridden in a derived class, synchronously passes a message to the target block.

virtual message_status send(
    _Inout_ message<T>* _PMessage,
    _Inout_ ISource<T>* _PSource) = 0;

Parameters

_PMessage
A pointer to the message object.

_PSource
A pointer to the source block offering the message.

Return Value

A message_status indication of what the target decided to do with the message.

Remarks

The method throws an invalid_argument exception if either the _PMessage or _PSource parameter is NULL.

Using the send method outside of message initiation and to propagate messages within a network is dangerous and can lead to deadlock.

When send returns, the message has either already been accepted, and transferred into the target block, or it has been declined by the target.

When overridden in a derived class, returns true or false depending on whether the message block accepts messages offered by a source that is not linked to it. If the overridden method returns true, the target cannot postpone an offered message, as consumption of a postponed message at a later time requires the source to be identified in its sourse link registry.

virtual bool supports_anonymous_source();

Return Value

true if the block can accept message from a source that is not linked to it false otherwise.

When overridden in a derived class, unlinks a specified source block from this ITarget block.

virtual void unlink_source(_Inout_ ISource<T>* _PSource) = 0;

Parameters

_PSource
The ISource block being unlinked from this ITarget block.

Remarks

This function should not be called directly on an ITarget block. Blocks should be disconnected using the unlink_target or unlink_targets methods on ISource blocks, which will invoke the unlink_source method on the corresponding target.

When overridden in a derived class, unlinks all source blocks from this ITarget block.

virtual void unlink_sources() = 0;

concurrency Namespace
ISource Class

Show: