Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die propagator_block-Klasse ist eine abstrakte Basisklasse für Meldungsblöcke, die sowohl Quelle als auch Ziel sind. Kombiniert die Funktion der source_block-Klasse mit der Funktion der target_block-Klasse.
Syntax
template<class _TargetLinkRegistry, class _SourceLinkRegistry, class _MessageProcessorType = ordered_message_processor<typename _TargetLinkRegistry::type::type>>
class propagator_block : public source_block<_TargetLinkRegistry,
_MessageProcessorType>,
public ITarget<typename _SourceLinkRegistry::type::source_type>;
Parameter
_TargetLinkRegistry
Die Verknüpfungsregistrierung, die zum Halten der Ziellinks verwendet werden soll.
_SourceLinkRegistry
Die Verknüpfungsregistrierung, die zum Halten der Quelllinks verwendet werden soll.
_MessageProcessorType
Der Prozessortyp für die Nachrichtenverarbeitung.
Mitglieder
Öffentliche Typedefs
| Name | Beschreibung |
|---|---|
source_iterator |
Der Typ des Iterators für dies source_link_managerpropagator_block. |
Öffentliche Konstruktoren
| Name | Beschreibung |
|---|---|
| Propagator-Block | Erstellt ein propagator_block-Objekt. |
| ~propagator_block Destruktor | Zerstört ein propagator_block -Objekt. |
Öffentliche Methoden
| Name | Beschreibung |
|---|---|
| verbreiten | Übergibt asynchron eine Nachricht von einem Quellblock an diesen Zielblock. |
| Senden | Initiiert synchron eine Nachricht an diesen Block. Wird von einem ISource Block aufgerufen. Nach Abschluss dieser Funktion wurde die Nachricht bereits in den Block weitergegeben. |
Geschützte Methoden
| Name | Beschreibung |
|---|---|
| eingehende_Nachrichten_ablehnen | Gibt dem Block an, dass neue Nachrichten abgelehnt werden sollen. |
| initialize_source_and_target | Initialisiert das Basisobjekt. Insbesondere muss das message_processor Objekt initialisiert werden. |
| link_source | Verknüpft einen angegebenen Quellblock mit diesem propagator_block Objekt. |
| verarbeite_eingabe_nachrichten | Verarbeiten von Eingabemeldungen. Dies ist nur für Propagator-Blöcke nützlich, die von source_block abgeleitet werden (Überschreibt source_block::process_input_messages.) |
| 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 propagator_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. |
| Netzwerkverbindungen_entfernen | Entfernt alle Quell- und Zielnetzwerkverbindungen aus diesem propagator_block Objekt. |
| send_message | Wenn diese Methode in einer abgeleiteten Klasse überschrieben wird, übergibt diese Methode synchron eine Nachricht von einem ISource Block an dieses propagator_block Objekt. Sie wird von der send Methode aufgerufen, wenn sie von einem Quellblock aufgerufen wird. |
| unlink_source | Hebt die Verknüpfung eines angegebenen Quellblocks von diesem propagator_block Objekt auf. |
| Quellen_trennen | Löst die Verknüpfungen aller Quellblöcke von diesem propagator_block Objekt. (Überschreibt ITarget::unlink_sources.) |
Hinweise
Um mehrere Vererbungen zu vermeiden, erbt die propagator_block Klasse von der source_block Klasse und ITarget der abstrakten Klasse. Die meisten Funktionen in der target_block Klasse werden hier repliziert.
Vererbungshierarchie
propagator_block
Anforderungen
Header: agents.h
Namespace: Parallelität
eingehende_Nachrichten_ablehnen
Gibt dem Block 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.
initialize_source_and_target
Initialisiert das Basisobjekt. Insbesondere muss das message_processor Objekt initialisiert werden.
void initialize_source_and_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.
Linkquelle
Verknüpft einen angegebenen Quellblock mit diesem propagator_block Objekt.
virtual void link_source(_Inout_ ISource<_Source_type>* _PSource);
Parameter
_PSource
Ein Zeiger auf den Block, der verknüpft werden soll ISource.
VerarbeiteEingabemeldungen
Verarbeiten von Eingabemeldungen. Dies ist nur für Verteilungsblöcke nützlich, die von source_block abgeleitet werden.
virtual void process_input_messages(_Inout_ message<_Target_type>* _PMessage);
Parameter
_PMessage
Ein Zeiger auf die Nachricht, die verarbeitet werden soll.
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 übermittelt.
Rückgabewert
Eine message_status-Angabe darüber, was das Ziel mit der Nachricht vorhat.
Hinweise
Die propagate Methode wird für einen Zielblock durch einen verknüpften Quellblock aufgerufen. Es wird eine asynchrone Aufgabe in die Warteschlange gestellt, um die Nachricht zu verarbeiten, wenn sie noch nicht in die Warteschlange gestellt oder ausgeführt wird.
Die Methode wirft eine invalid_argument Ausnahme, wenn entweder der _PMessage- oder _PSource-Parameter NULL ist.
Nachricht_verbreiten
Wenn diese Methode in einer abgeleiteten Klasse außer Kraft gesetzt wird, übergibt diese Methode asynchron eine Nachricht von einem ISource Block an dieses propagator_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 übermittelt.
Rückgabewert
Eine message_status-Angabe darüber, was das Ziel mit der Nachricht vorhat.
Propagator-Block
Erstellt ein propagator_block-Objekt.
propagator_block();
~propagator_block
Zerstört ein propagator_block -Objekt.
virtual ~propagator_block();
Filter registrieren
Registriert eine Filtermethode, die für jede empfangene Nachricht aufgerufen wird.
void register_filter(filter_method const& _Filter);
Parameter
_Filter
Die Filtermethode.
Netzwerkverbindungen_entfernen
Entfernt alle Quell- und Zielnetzwerkverbindungen aus diesem propagator_block Objekt.
void remove_network_links();
Senden
Initiiert synchron eine Nachricht an diesen Block. Wird von einem ISource Block aufgerufen. Nach Abschluss dieser Funktion wurde die Nachricht bereits in den Block weitergegeben.
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 übermittelt.
Rückgabewert
Eine message_status-Angabe darüber, was das Ziel mit der Nachricht vorhat.
Hinweise
Diese Methode löst eine invalid_argument Ausnahme aus, wenn entweder der _PMessage-Parameter oder der _PSource-Parameter NULL ist.
Nachricht_senden
Wenn diese Methode in einer abgeleiteten Klasse überschrieben wird, übergibt diese Methode synchron eine Nachricht von einem ISource Block an dieses propagator_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
Eine message_status-Angabe darüber, was das Ziel mit der Nachricht vorhat.
Hinweise
Standardmäßig gibt dieser Block declined zurück, es sei denn, er wird von einer abgeleiteten Klasse überschrieben.
Quelle_entfernen
Hebt die Verknüpfung eines angegebenen Quellblocks von diesem propagator_block Objekt auf.
virtual void unlink_source(_Inout_ ISource<_Source_type>* _PSource);
Parameter
_PSource
Ein Zeiger auf den Block, der ISource entknüpft werden soll.
Quellen_verknüpfung_aufheben
Löst die Verknüpfungen aller Quellblöcke von diesem propagator_block Objekt.
virtual void unlink_sources();