ISource-Klasse
Die ISource
-Klasse ist die Schnittstelle für alle Quellblöcke. Quellblöcke geben Meldungen an ITarget
-Blöcke weiter.
Syntax
template<class T>
class ISource;
Parameter
T
Der Datentyp der Nutzlast innerhalb der vom Quellblock erzeugten Nachrichten.
Member
Öffentliche Typedefs
Name | Beschreibung |
---|---|
source_type |
Ein Typalias für T . |
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
~ISource Destructor | Zerstört das ISource -Objekt. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
annehmen | Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, akzeptiert sie eine Nachricht, die von diesem ISource Block angeboten wurde, und überträgt den Besitz an den Aufrufer. |
acquire_ref | Wenn sie in einer abgeleiteten Klasse überschrieben werden, wird eine Verweisanzahl für diesen ISource Block erworben, um das Löschen zu verhindern. |
Nutzen | Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird eine Nachricht verwendet, die zuvor von diesem ISource Block angeboten und vom Ziel erfolgreich reserviert wurde, wobei der Besitz an den Aufrufer übertragen wird. |
link_target | Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein Zielblock mit diesem ISource Block verknüpft. |
release | Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird eine vorherige erfolgreiche Nachrichtenreservierung freigegeben. |
release_ref | Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird für diesen ISource Block eine Referenzanzahl freigegeben. |
reserve | Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, reserviert sie eine Nachricht, die zuvor von diesem ISource Block angeboten wurde. |
unlink_target | Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, heben Sie die Verknüpfung eines Zielblocks von diesem ISource Block auf, wenn sie zuvor verknüpft wurden. |
unlink_targets | Wenn sie in einer abgeleiteten Klasse überschrieben werden, heben Sie die Verknüpfung aller Zielblöcke von diesem ISource Block auf. |
Hinweise
Weitere Informationen finden Sie unter "Asynchrone Nachrichtenblöcke".
Vererbungshierarchie
ISource
Anforderungen
Header: agents.h
Namespace: Parallelität
Akzeptieren
Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, akzeptiert sie eine Nachricht, die von diesem ISource
Block angeboten wurde, und überträgt den Besitz an den Aufrufer.
virtual message<T>* accept(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Parameter
_MsgId
Das runtime_object_identity
angebotene message
Objekt.
_PTarget
Ein Zeiger auf den Zielblock, der die accept
Methode aufruft.
Rückgabewert
Ein Zeiger auf die Nachricht, deren Besitzer der Aufrufer jetzt ist.
Hinweise
Die accept
Methode wird von einem Ziel aufgerufen, während eine Nachricht von diesem ISource
Block angeboten wird. Der zurückgegebene Nachrichtenzeiger unterscheidet sich möglicherweise von dem, das an die propagate
Methode des ITarget
Blocks übergeben wird, wenn sich diese Quelle entscheidet, eine Kopie der Nachricht zu erstellen.
acquire_ref
Wenn sie in einer abgeleiteten Klasse überschrieben werden, wird eine Verweisanzahl für diesen ISource
Block erworben, um das Löschen zu verhindern.
virtual void acquire_ref(_Inout_ ITarget<T>* _PTarget) = 0;
Parameter
_PTarget
Ein Zeiger auf den Zielblock, der diese Methode aufruft.
Hinweise
Diese Methode wird von einem ITarget
Objekt aufgerufen, das während der link_target
Methode mit dieser Quelle verknüpft wird.
nutzen
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird eine Nachricht verwendet, die zuvor von diesem ISource
Block angeboten und vom Ziel erfolgreich reserviert wurde, wobei der Besitz an den Aufrufer übertragen wird.
virtual message<T>* consume(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Parameter
_MsgId
Das runtime_object_identity
reservierte message
Objekt.
_PTarget
Ein Zeiger auf den Zielblock, der die consume
Methode aufruft.
Rückgabewert
Ein Zeiger auf das message
Objekt, dessen Besitzer der Aufrufer jetzt ist.
Hinweise
Die consume
Methode ähnelt accept
, muss jedoch immer einem Aufruf dieser reserve
zurückgegebenen Methode true
vorangestellt werden.
~ISource
Zerstört das ISource
-Objekt.
virtual ~ISource();
link_target
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein Zielblock mit diesem ISource
Block verknüpft.
virtual void link_target(_Inout_ ITarget<T>* _PTarget) = 0;
Parameter
_PTarget
Ein Zeiger auf den Zielblock, der mit diesem ISource
Block verknüpft wird.
Freigabe
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird eine vorherige erfolgreiche Nachrichtenreservierung freigegeben.
virtual void release(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Parameter
_MsgId
Das runtime_object_identity
reservierte message
Objekt.
_PTarget
Ein Zeiger auf den Zielblock, der die release
Methode aufruft.
release_ref
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird für diesen ISource
Block eine Referenzanzahl freigegeben.
virtual void release_ref(_Inout_ ITarget<T>* _PTarget) = 0;
Parameter
_PTarget
Ein Zeiger auf den Zielblock, der diese Methode aufruft.
Hinweise
Diese Methode wird von einem ITarget
Objekt aufgerufen, das von dieser Quelle nicht verknüpft wird. Der Quellblock darf alle Ressourcen freigeben, die für den Zielblock reserviert sind.
Reserve
Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, reserviert sie eine Nachricht, die zuvor von diesem ISource
Block angeboten wurde.
virtual bool reserve(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Parameter
_MsgId
Das runtime_object_identity
angebotene message
Objekt.
_PTarget
Ein Zeiger auf den Zielblock, der die reserve
Methode aufruft.
Rückgabewert
true
wenn die Nachricht erfolgreich reserviert wurde, false
andernfalls. Reservierungen können aus vielen Gründen fehlschlagen, einschließlich: Die Nachricht wurde bereits von einem anderen Ziel reserviert oder akzeptiert, die Quelle konnte Vorbehalte verweigern usw.
Hinweise
Nach dem Anruf reserve
müssen Sie, falls dies erfolgreich ist, entweder consume
anrufen, oder release
um den Besitz der Nachricht zu übernehmen oder aufzugeben.
unlink_target
Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, heben Sie die Verknüpfung eines Zielblocks von diesem ISource
Block auf, wenn sie zuvor verknüpft wurden.
virtual void unlink_target(_Inout_ ITarget<T>* _PTarget) = 0;
Parameter
_PTarget
Ein Zeiger auf den Zielblock, der von diesem ISource
Block nicht verknüpft wird.
unlink_targets
Wenn sie in einer abgeleiteten Klasse überschrieben werden, heben Sie die Verknüpfung aller Zielblöcke von diesem ISource
Block auf.
virtual void unlink_targets() = 0;