propagator_block-Klasse
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.
Member
Öffentliche Typedefs
Name | Beschreibung |
---|---|
source_iterator |
Der Typ des Iterators für dies source_link_manager propagator_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 |
---|---|
decline_incoming_messages | Gibt 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. |
process_input_messages | Verarbeiten von Eingabemeldungen. Dies ist nur für Verteilungsblöcke nützlich, die von source_block abgeleitet werden (Außerkraftsetzungen source_block::p rocess_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. |
remove_network_links | 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. |
unlink_sources | Hebt die Verknüpfung aller Quellblöcke von diesem propagator_block Objekt auf. (Außerkraftsetzungen 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
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.
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.
link_source
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 ISource
verknüpft werden soll.
process_input_messages
Verarbeiten von Eingabemeldungen. Dies ist nur für Verteilungsblöcke nützlich, die von source_block
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 anbietet.
Rückgabewert
Ein message_status Hinweis darauf, was das Ziel mit der Nachricht zu tun hat.
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 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 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 anbietet.
Rückgabewert
Ein message_status Hinweis darauf, was das Ziel mit der Nachricht zu tun hat.
propagator_block
Erstellt ein propagator_block
-Objekt.
propagator_block();
~propagator_block
Zerstört ein propagator_block
-Objekt.
virtual ~propagator_block();
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_network_links
Entfernt alle Quell- und Zielnetzwerkverbindungen aus diesem propagator_block
Objekt.
void remove_network_links();
Send
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 anbietet.
Rückgabewert
Ein message_status Hinweis darauf, was das Ziel mit der Nachricht zu tun hat.
Hinweise
Diese Methode löst eine invalid_argument Ausnahme aus, wenn entweder der Parameter oder _PSource
der _PMessage
Parameter istNULL
.
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.
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.
unlink_source
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
nicht verknüpft werden soll.
unlink_sources
Hebt die Verknüpfung aller Quellblöcke von diesem propagator_block
Objekt auf.
virtual void unlink_sources();