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_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
Weitergegeben Ü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

Isource

Itarget

Source_block

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.

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.

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 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.

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.

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.

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

virtual void unlink_sources();

Siehe auch

Concurrency-Namespace
source_block-Klasse
ITarget-Klasse