Freigeben über


ITarget-Klasse

Die ITarget-Klasse ist die Schnittstelle für alle Zielblöcke. Zielblöcke nehmen Meldungen auf, die von ISource-Blöcken angeboten werden.

Syntax

template<class T>
class ITarget;

Parameter

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

Member

Ö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
Weitergegeben Wenn eine abgeleitete Klasse überschrieben wird, wird asynchron eine Nachricht von einem Quellblock an diesen Zielblock übergeben.
Senden Wenn eine abgeleitete Klasse überschrieben wird, wird eine Nachricht synchron an den Zielblock übergeben.
supports_anonymous_source Wenn eine abgeleitete 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 dieser verknüpft ist. Wenn die überschriebene Methode zurückgegeben wird true, kann das Ziel eine angebotene Nachricht nicht verschieben, da der Verbrauch einer verschobenen Nachricht zu einem späteren Zeitpunkt erfordert, dass die Quelle in seiner Quelllinkregistrierung 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, heben Sie die Verknüpfung eines angegebenen Quellblocks von diesem ITarget Block auf.
unlink_sources 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 Block, der ISource mit diesem ITarget Block verknüpft wird.

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.

Weitergegeben

Wenn eine abgeleitete Klasse überschrieben wird, wird asynchron eine Nachricht von einem Quellblock an diesen Zielblock übergeben.

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

Rückgabewert

Ein message_status Hinweis darauf, was das Ziel mit der Nachricht zu tun hat.

Hinweise

Die Methode löst eine invalid_argument Ausnahme aus, wenn entweder der Parameter oder _PSource der _PMessage Parameter istNULL.

Send

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

Rückgabewert

Ein message_status Hinweis darauf, was das Ziel mit der Nachricht zu tun hat.

Hinweise

Die Methode löst eine invalid_argument Ausnahme aus, wenn entweder der Parameter oder _PSource der _PMessage Parameter istNULL.

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.

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

supports_anonymous_source

Wenn eine abgeleitete 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 dieser verknüpft ist. Wenn die überschriebene Methode zurückgegeben wird true, kann das Ziel eine angebotene Nachricht nicht verschieben, da der Verbrauch einer verschobenen Nachricht zu einem späteren Zeitpunkt erfordert, dass die Quelle in der Registrierung für linkskursiv 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, heben Sie die Verknüpfung eines angegebenen Quellblocks von diesem ITarget Block auf.

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

Parameter

_PSource
Der ISource Block, der von diesem ITarget Block nicht verknüpft wird.

Hinweise

Diese Funktion sollte nicht direkt für einen ITarget Block aufgerufen werden. Blöcke sollten mit den unlink_target Methoden für unlink_targetsISource Blöcke getrennt werden, wodurch die unlink_source Methode für 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