Freigeben über


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.

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

ISource

ITarget

source_block

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.

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.

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.

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.

Löst die Verknüpfungen aller Quellblöcke von diesem propagator_block Objekt.

virtual void unlink_sources();

Siehe auch

Concurrency-Namespace
SourceBlock-Klasse
ITarget-Klasse