source_link_manager Class

The source_link_manager object manages messaging block network links to ISource blocks.

Syntax

template<class _LinkRegistry>
class source_link_manager;

Parameters

_LinkRegistry
The network link registry.

Members

Public Typedefs

Name Description
const_pointer A type that provides a pointer to a const element in a source_link_manager object.
const_reference A type that provides a reference to a const element stored in a source_link_manager object for reading and performing const operations.
iterator A type that provides an iterator that can read or modify any element in the source_link_manager object.
type The type of link registry being managed by the source_link_manager object.

Public Constructors

Name Description
source_link_manager Constructs a source_link_manager object.
~source_link_manager Destructor Destroys the source_link_manager object.

Public Methods

Name Description
add Adds a source link to the source_link_manager object.
begin Returns an iterator to the first element in the source_link_manager object.
contains Searches the network_link_registry within this source_link_manager object for a specified block.
count Counts the number of linked blocks in the source_link_manager object.
reference Acquires a reference on the source_link_manager object.
register_target_block Registers the target block that holds this source_link_manager object.
release Releases the reference on the source_link_manager object.
remove Removes a link from the source_link_manager object.
set_bound Sets the maximum number of source links that can be added to this source_link_manager object.

Remarks

Currently, the source blocks are reference counted. This is a wrapper on a network_link_registry object that allows concurrent access to the links and provides the ability to reference the links through callbacks. Message blocks ( target_blocks or propagator_blocks) should use this class for their source links.

Inheritance Hierarchy

source_link_manager

Requirements

Header: agents.h

Namespace: concurrency

add

Adds a source link to the source_link_manager object.

void add(_EType _Link);

Parameters

_Link
A pointer to a block to be added.

begin

Returns an iterator to the first element in the source_link_manager object.

iterator begin();

Return Value

An iterator addressing the first element in the source_link_manager object.

Remarks

The end state of the iterator is indicated by a NULL link.

contains

Searches the network_link_registry within this source_link_manager object for a specified block.

bool contains(_EType _Link);

Parameters

_Link
A pointer to a block that is to be searched for in the source_link_manager object.

Return Value

true if the specified block was found, false otherwise.

count

Counts the number of linked blocks in the source_link_manager object.

size_t count();

Return Value

The number of linked blocks in the source_link_manager object.

reference

Acquires a reference on the source_link_manager object.

void reference();

register_target_block

Registers the target block that holds this source_link_manager object.

void register_target_block(_Inout_ ITarget<typename _Block::source_type>* _PTarget);

Parameters

_PTarget
The target block holding this source_link_manager object.

release

Releases the reference on the source_link_manager object.

void release();

remove

Removes a link from the source_link_manager object.

bool remove(_EType _Link);

Parameters

_Link
A pointer to a block to be removed, if found.

Return Value

true if the link was found and removed, false otherwise.

set_bound

Sets the maximum number of source links that can be added to this source_link_manager object.

void set_bound(size_t _MaxLinks);

Parameters

_MaxLinks
The maximum number of links.

source_link_manager

Constructs a source_link_manager object.

source_link_manager();

~source_link_manager

Destroys the source_link_manager object.

~source_link_manager();

See Also

concurrency Namespace
single_link_registry Class
multi_link_registry Class