target_block-Klasse

Die target_block-Klasse ist eine abstrakte Basisklasse, mit der grundlegende Linkmanagementfunktionalität und Fehlerüberprüfung für Nur-Ziel-Blöcke bereitgestellt werden.

Syntax

template<class _SourceLinkRegistry, class _MessageProcessorType = ordered_message_processor<typename _SourceLinkRegistry::type::source_type>>
class target_block : public ITarget<typename _SourceLinkRegistry::type::source_type>;

Parameter

_SourceLinkRegistry
Die Verknüpfungsregistrierung, die zum Halten der Quelllinks verwendet werden soll.

_MessageProcessorType
Der Prozessortyp für die Nachrichtenverarbeitung.

Member

Öffentliche Typedefs

Name Beschreibung
source_iterator Der Typ des Iterators für source_link_manager dieses target_block Objekt.

Öffentliche Konstruktoren

Name Beschreibung
Target_block Erstellt ein target_block-Objekt.
~target_block Destruktor Zerstört das target_block-Objekt.

Öffentliche Methoden

Name Beschreibung
Weitergegeben Übergibt asynchron eine Nachricht von einem Quellblock an diesen Zielblock.
Senden Übergibt eine Nachricht synchron von einem Quellblock an diesen Zielblock.

Geschützte Methoden

Name Beschreibung
async_send Sendet asynchron eine Nachricht zur Verarbeitung.
decline_incoming_messages Gibt an, dass neue Nachrichten abgelehnt werden sollen.
enable_batched_processing Aktiviert die Batchverarbeitung für diesen Block.
initialize_target Initialisiert das Basisobjekt. Insbesondere muss das message_processor Objekt initialisiert werden.
link_source Verknüpft einen angegebenen Quellblock mit diesem target_block Objekt.
process_input_messages Verarbeitet Nachrichten, die als Eingaben empfangen werden.
process_message Wenn eine abgeleitete Klasse außer Kraft gesetzt wird, verarbeitet sie eine Nachricht, die von diesem target_block Objekt akzeptiert wurde.
Propagate_message Wenn diese Methode in einer abgeleiteten Klasse außer Kraft gesetzt wird, übergibt diese Methode asynchron eine Nachricht von einem ISource Block an dieses target_block Objekt. Sie wird von der propagate Methode aufgerufen, wenn sie von einem Quellblock aufgerufen wird.
register_filter Registriert eine Filtermethode, die für jede empfangene Nachricht aufgerufen wird.
remove_sources Hebt die Verknüpfung aller Quellen auf, nachdem auf ausstehende asynchrone Sendevorgänge gewartet wurde.
Send_message Wenn diese Methode in einer abgeleiteten Klasse überschrieben wird, übergibt diese Methode synchron eine Nachricht von einem ISource Block an dieses target_block Objekt. Sie wird von der send Methode aufgerufen, wenn sie von einem Quellblock aufgerufen wird.
sync_send Synchrones Senden einer Nachricht zur Verarbeitung.
unlink_source Hebt die Verknüpfung eines angegebenen Quellblocks von diesem target_block Objekt auf.
unlink_sources Hebt die Verknüpfung aller Quellblöcke von diesem target_block Objekt auf. (Außerkraftsetzungen ITarget::unlink_sources.)
wait_for_async_sends Wartet, bis alle asynchronen Verteilungen abgeschlossen sind.

Vererbungshierarchie

Itarget

target_block

Anforderungen

Header: agents.h

Namespace: Parallelität

async_send

Sendet asynchron eine Nachricht zur Verarbeitung.

void async_send(_Inout_opt_ message<_Source_type>* _PMessage);

Parameter

_PMessage
Ein Zeiger auf die gesendete Nachricht.

decline_incoming_messages

Gibt an, dass neue Nachrichten abgelehnt werden sollen.

void decline_incoming_messages();

Hinweise

Diese Methode wird vom Destruktor aufgerufen, um sicherzustellen, dass neue Nachrichten abgelehnt werden, während die Zerstörung ausgeführt wird.

enable_batched_processing

Aktiviert die Batchverarbeitung für diesen Block.

void enable_batched_processing();

initialize_target

Initialisiert das Basisobjekt. Insbesondere muss das message_processor Objekt initialisiert werden.

void initialize_target(
    _Inout_opt_ Scheduler* _PScheduler = NULL,
    _Inout_opt_ ScheduleGroup* _PScheduleGroup = NULL);

Parameter

_PScheduler
Der Zeitplaner, der für die Planung von Vorgängen verwendet werden soll.

_PScheduleGroup
Die Zeitplangruppe, die für die Planung von Vorgängen verwendet werden soll.

Verknüpft einen angegebenen Quellblock mit diesem target_block Objekt.

virtual void link_source(_Inout_ ISource<_Source_type>* _PSource);

Parameter

_PSource
Ein Zeiger auf den Block, der ISource verknüpft werden soll.

Hinweise

Diese Funktion sollte nicht direkt für ein target_block Objekt aufgerufen werden. Blöcke sollten mithilfe der link_target Methode für ISource Blöcke miteinander verbunden werden, wodurch die link_source Methode für das entsprechende Ziel aufgerufen wird.

process_input_messages

Verarbeitet Nachrichten, die als Eingaben empfangen werden.

virtual void process_input_messages(_Inout_ message<_Source_type>* _PMessage);

Parameter

_PMessage
Ein Zeiger auf die Nachricht, die verarbeitet werden soll.

process_message

Wenn eine abgeleitete Klasse außer Kraft gesetzt wird, verarbeitet sie eine Nachricht, die von diesem target_block Objekt akzeptiert wurde.

virtual void process_message(message<_Source_type> *);

Weitergegeben

Übergibt asynchron eine Nachricht von einem Quellblock an diesen Zielblock.

virtual message_status propagate(
    _Inout_opt_ message<_Source_type>* _PMessage,
    _Inout_opt_ ISource<_Source_type>* _PSource);

Parameter

_PMessage
Ein Zeiger auf das message-Objekt.

_PSource
Ein Zeiger auf den Quellblock, der die Nachricht anbietet.

Rückgabewert

Ein message_status Hinweis darauf, was das Ziel mit der Nachricht zu tun hat.

Hinweise

Die Methode löst eine invalid_argument Ausnahme aus, wenn entweder der Parameter oder _PSource der _PMessage Parameter istNULL.

Propagate_message

Wenn diese Methode in einer abgeleiteten Klasse außer Kraft gesetzt wird, übergibt diese Methode asynchron eine Nachricht von einem ISource Block an dieses target_block Objekt. Sie wird von der propagate Methode aufgerufen, wenn sie von einem Quellblock aufgerufen wird.

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

Parameter

_PMessage
Ein Zeiger auf das message-Objekt.

_PSource
Ein Zeiger auf den Quellblock, der die Nachricht anbietet.

Rückgabewert

Ein message_status Hinweis darauf, was das Ziel mit der Nachricht zu tun hat.

register_filter

Registriert eine Filtermethode, die für jede empfangene Nachricht aufgerufen wird.

void register_filter(filter_method const& _Filter);

Parameter

_Filter
Die Filtermethode.

remove_sources

Hebt die Verknüpfung aller Quellen auf, nachdem auf ausstehende asynchrone Sendevorgänge gewartet wurde.

void remove_sources();

Hinweise

Alle Zielblöcke sollten diese Routine aufrufen, um die Quellen in ihrem Destruktor zu entfernen.

Send

Übergibt eine Nachricht synchron von einem Quellblock an diesen Zielblock.

virtual message_status send(
    _Inout_ message<_Source_type>* _PMessage,
    _Inout_ ISource<_Source_type>* _PSource);

Parameter

_PMessage
Ein Zeiger auf das message-Objekt.

_PSource
Ein Zeiger auf den Quellblock, der die Nachricht anbietet.

Rückgabewert

Ein message_status Hinweis darauf, was das Ziel mit der Nachricht zu tun hat.

Hinweise

Die Methode löst eine invalid_argument Ausnahme aus, wenn entweder der Parameter oder _PSource der _PMessage Parameter istNULL.

Die Verwendung der send Methode außerhalb der Nachrichteninitiierung und zum Verteilen von Nachrichten innerhalb eines Netzwerks ist gefährlich und kann zu Deadlock führen.

Wenn send die Nachricht zurückgegeben wird, wurde die Nachricht entweder bereits akzeptiert und in den Zielblock übertragen, oder sie wurde vom Ziel abgelehnt.

Send_message

Wenn diese Methode in einer abgeleiteten Klasse überschrieben wird, übergibt diese Methode synchron eine Nachricht von einem ISource Block an dieses target_block Objekt. Sie wird von der send Methode aufgerufen, wenn sie von einem Quellblock aufgerufen wird.

virtual message_status send_message(
    _Inout_ message<_Source_type> *,
    _Inout_ ISource<_Source_type> *);

Rückgabewert

Ein message_status Hinweis darauf, was das Ziel mit der Nachricht zu tun hat.

Hinweise

Standardmäßig wird dieser Block zurückgegeben declined , es sei denn, er wird von einer abgeleiteten Klasse überschrieben.

sync_send

Synchrones Senden einer Nachricht zur Verarbeitung.

void sync_send(_Inout_opt_ message<_Source_type>* _PMessage);

Parameter

_PMessage
Ein Zeiger auf die gesendete Nachricht.

Target_block

Erstellt ein target_block-Objekt.

target_block();

~Target_block

Zerstört das target_block-Objekt.

virtual ~target_block();

Hebt die Verknüpfung eines angegebenen Quellblocks von diesem target_block Objekt auf.

virtual void unlink_source(_Inout_ ISource<_Source_type>* _PSource);

Parameter

_PSource
Ein Zeiger auf den Block, der ISource nicht verknüpft werden soll.

Hebt die Verknüpfung aller Quellblöcke von diesem target_block Objekt auf.

virtual void unlink_sources();

wait_for_async_sends

Wartet, bis alle asynchronen Verteilungen abgeschlossen sind.

void wait_for_async_sends();

Hinweise

Diese Methode wird von Nachrichtenblockdestruktoren verwendet, um sicherzustellen, dass alle asynchronen Vorgänge Zeit hatten, bevor der Block zerstört wird.

Siehe auch

Concurrency-Namespace
ITarget-Klasse