source_block-Klasse
Die source_block-Klasse ist eine abstrakte Basisklasse ausschließlich für Quellblöcke. Die Klasse stellt grundlegende Linkmanagementfunktionalität sowie allgemeine Fehlerüberprüfungen bereit.
template<
class _TargetLinkRegistry,
class _MessageProcessorType = ordered_message_processor<typename _TargetLinkRegistry::type::type>
>
class source_block : public ISource<typename _TargetLinkRegistry::type::type>;
Parameter
_TargetLinkRegistry
Linkregistrierung, die zum Speichern der Ziellinks verwendet werden soll._MessageProcessorType
Prozessortyp zur Meldungsverarbeitung.
Member
Öffentliche Typedefs
Name |
Beschreibungen |
---|---|
target_iterator |
Der Iterator zum Durchlaufen der verbundenen Ziele. |
Öffentliche Konstruktoren
Name |
Beschreibungen |
---|---|
Erstellt ein source_block-Objekt. |
|
Zerstört das source_block-Objekt. |
Öffentliche Methoden
Name |
Beschreibungen |
---|---|
Akzeptiert eine Meldung, die von diesem source_block-Objekt angeboten wurde, und überträgt den Besitz an den Aufrufer. |
|
Ruft eine Verweisanzahl für dieses source_block-Objekt ab, um das Löschen zu verhindern. |
|
Nimmt eine Meldung an, die zuvor von diesem source_block-Objekt angeboten und vom Ziel erfolgreich reserviert wurde, und überträgt den Besitz an den Aufrufer. |
|
Verknüpft einen Zielblock mit diesem source_block-Objekt. |
|
Gibt die Reservierung einer vorherigen erfolgreichen Meldung frei. |
|
Gibt auf diesem source_block-Objekt einen Verweiszähler frei. |
|
Reserviert eine Meldung, die zuvor von diesem source_block-Objekt angeboten wurde. |
|
Hebt die Verknüpfung eines Zielblocks mit diesem source_block-Objekt auf. |
|
Hebt die Verknüpfung aller Zielblöcke mit diesem source_block-Objekt auf. (Überschreibt ISource::unlink_targets.) |
Geschützte Methoden
Name |
Beschreibungen |
---|---|
Akzeptiert beim Überschreiben in einer abgeleiteten Klasse eine von der Quelle akzeptierte Meldung. Meldungsblöcke sollten diese Methode überschreiben, um _MsgId zu überprüfen und eine Meldung zurückzugeben. |
|
Stellt asynchron Meldungen in die Warteschlange ein und startet eine Weiterleitungsaufgabe, wenn dies nicht bereits geschehen ist. |
|
Verwendet beim Überschreiben in einer abgeleiteten Klasse eine Meldung, die zuvor reserviert wurde. |
|
Initialisiert message_propagator in diesem source_block. |
|
Ein Rückruf, der meldet, dass ein neues Ziel mit diesem source_block-Objekt verknüpft wurde. |
|
Gibt beim Überschreiben in einer abgeleiteten Klasse die angegebene Meldung an ein oder alle verknüpfte Ziele weiter. Dies ist die Hauptweitergaberoutine für Meldungsblöcke. |
|
Gibt beim Überschreiben in einer abgeleiteten Klasse eine frühere Meldungsreservierung frei. |
|
Entfernt alle Ziellinks für diesen Quellblock. Dies sollte vom Destruktor aufgerufen werden. |
|
Reserviert beim Überschreiben in einer abgeleiteten Klasse eine Meldung, die von diesem source_block-Objekt angeboten wurde. |
|
Setzt beim Überschreiben in einer abgeleiteten Klasse die Weiterleitung nach der Freigabe einer Reservierung fort. |
|
Stellt synchron Meldungen in die Warteschlange ein und startet eine Weiterleitungsaufgabe, wenn dies nicht bereits geschehen ist. |
|
Ein Rückruf, der meldet, dass eine Zielverknüpfung von diesem source_block-Objekt entfernt wurde. |
|
Wartet, bis alle asynchrone Weitergaben abgeschlossen sind. Dieser weiterleitungsspezifischer Spin-Wait wird in Destruktoren von Meldungsblöcken verwendet, um sicherzustellen, dass alle asynchronen Weiterleitungen genügend Zeit zum Beenden erhalten, bevor der Block zerstört wird. |
Hinweise
Meldungsblöcke sollten von diesem Block abgeleitet werden, um das Linkmanagement und die Synchronisierung nutzen zu können, die von dieser Klasse bereitgestellt werden.
Vererbungshierarchie
Anforderungen
Header: agents.h
Namespace: Concurrency