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 |
---|---|
verbreiten | Ü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
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.
link_source
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> *);
verbreiten
Ü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();
unlink_source
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.
unlink_sources
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.