Freigeben über


ITarget-Klasse

Die ITarget-Klasse ist die Schnittstelle für alle Zielblöcke. Zielblöcke empfangen die von ISource-Blöcken angebotenen Meldungen.

Syntax

template<class T>
class ITarget;

Parameter

T
Der Datentyp der Nutzlast innerhalb der vom Zielblock akzeptierten Nachrichten.

Mitglieder

Öffentliche Typedefs

Name Beschreibung
filter_method Die Signatur einer beliebigen Methode, die vom Block verwendet wird, der einen bool Wert zurückgibt, um zu bestimmen, ob eine angebotene Nachricht akzeptiert werden soll.
type Ein Typalias für T.

Öffentliche Konstruktoren

Name Beschreibung
~ITarget Destructor Zerstört das ITarget-Objekt.

Öffentliche Methoden

Name Beschreibung
verbreiten Wenn sie in einer abgeleiteten Klasse überschrieben wird, übergibt diese Methode asynchron eine Nachricht von einem Quellblock an diesen Zielblock.
Senden Wenn eine abgeleitete Klasse überschrieben wird, wird eine Nachricht synchron an den Zielblock übergeben.
unterstützt_anonyme_Quelle Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird "true" oder "false" zurückgegeben, je nachdem, ob der Nachrichtenblock Nachrichten akzeptiert, die von einer Quelle angeboten werden, die nicht mit ihm verbunden ist. Wenn die überschriebene Methode true zurückgibt, kann das Ziel eine angebotene Nachricht nicht verschieben, da der Verbrauch einer verschobenen Nachricht zu einem späteren Zeitpunkt erfordert, dass die Quelle in dessen Quelllink-Registrierung identifiziert wird.

Geschützte Methoden

Name Beschreibung
link_source Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, wird ein angegebener Quellblock mit diesem ITarget Block verknüpft.
unlink_source Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, wird ein angegebener Quellblock von diesem ITarget Block entlinkt.
Quellen_trennen Wenn sie in einer abgeleiteten Klasse überschrieben werden, heben Sie die Verknüpfung aller Quellblöcke von diesem ITarget Block auf.

Hinweise

Weitere Informationen finden Sie unter "Asynchrone Nachrichtenblöcke".

Vererbungshierarchie

ITarget

Anforderungen

Header: agents.h

Namespace: Parallelität

~ITarget

Zerstört das ITarget-Objekt.

virtual ~ITarget();

Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, wird ein angegebener Quellblock mit diesem ITarget Block verknüpft.

virtual void link_source(_Inout_ ISource<T>* _PSource) = 0;

Parameter

_PSource
Der ISource Block, der mit diesem ITarget Block verknüpft ist.

Hinweise

Diese Funktion sollte nicht direkt für einen ITarget Block 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.

verbreiten

Wenn sie in einer abgeleiteten Klasse überschrieben wird, übergibt diese Methode asynchron eine Nachricht von einem Quellblock an diesen Zielblock.

virtual message_status propagate(
    _Inout_opt_ message<T>* _PMessage,
    _Inout_opt_ ISource<T>* _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.

Hinweise

Die Methode löst eine invalid_argument aus, wenn entweder der _PMessage- oder der _PSource-Parameter NULL ist.

Senden

Wenn eine abgeleitete Klasse überschrieben wird, wird eine Nachricht synchron an den Zielblock übergeben.

virtual message_status send(
    _Inout_ message<T>* _PMessage,
    _Inout_ ISource<T>* _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.

Hinweise

Die Methode wirft eine invalid_argument Ausnahme, wenn entweder der _PMessage- oder _PSource-Parameter NULL ist.

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.

Sobald send zurückkehrt, wurde die Nachricht entweder bereits akzeptiert und in den Zielblock übertragen, oder sie wurde vom Ziel abgelehnt.

supports_anonymous_source

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird "true" oder "false" zurückgegeben, je nachdem, ob der Nachrichtenblock Nachrichten akzeptiert, die von einer Quelle angeboten werden, die nicht mit ihm verbunden ist. Wenn die überschriebene Methode true zurückgibt, kann das Ziel eine angebotene Nachricht nicht verzögern, da die spätere Verarbeitung einer verzögerten Nachricht erfordert, dass die Quelle in ihrem Quellenverzeichnis identifiziert wird.

virtual bool supports_anonymous_source();

Rückgabewert

true wenn der Block Nachrichten von einer Quelle akzeptieren kann, die nicht mit dieser false verknüpft ist, andernfalls.

Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, wird ein angegebener Quellblock von diesem ITarget Block entlinkt.

virtual void unlink_source(_Inout_ ISource<T>* _PSource) = 0;

Parameter

_PSource
Der ISource Block wird von diesem ITarget Block getrennt.

Hinweise

Diese Funktion sollte nicht direkt für einen ITarget Block aufgerufen werden. Blöcke sollten unter Verwendung der unlink_target oder unlink_targets Methoden an ISource Blöcken getrennt werden, wodurch die unlink_source Methode auf das entsprechende Ziel aufgerufen wird.

Wenn sie in einer abgeleiteten Klasse überschrieben werden, heben Sie die Verknüpfung aller Quellblöcke von diesem ITarget Block auf.

virtual void unlink_sources() = 0;

Siehe auch

Concurrency-Namespace
ISource-Klasse