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 |
---|---|
verbreiten | 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();
link_source
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.
verbreiten
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.
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.
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_targets
ISource
Blöcke getrennt werden, wodurch die unlink_source
Methode für das entsprechende Ziel aufgerufen wird.
unlink_sources
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;