Dieses Modul implementiert das Nachrichtensystem von ORBIT.
Das Modul umfasst die folgenden Klassen:
Diese Klasse implementiert das ORBIT-Nachrichtensystem.
Parameter
Beschreibung
Das Nachrichtensystem funktioniert nach dem Broadcast-Prinzip. Nachrichten werden von einem Absender an das Nachrichtensystem übergeben, ohne dass der Absender weiß, wer die Nachricht empfangen wird (send()).
Empfänger können sich mit einem Empfangsmuster (Slot) bei dem Nachrichtensystem registrieren (add_listener()) und bekommen alle Nachrichten zugestellt, die ihrem Empfangsmuster entsprechen.
Das Zustellen der Nachrichten (der Aufruf der Empfänger-Callbacks) erfolgt in einem dedizierten Thread. Das hat den Vorteil, dass das Versenden einer Nachricht ein asynchroner Vorgang ist, der den Absender nicht blockiert.
Jede Nachricht ist einem Ereignis zugeordnet. Dieses Ereignis ist durch einen Job, eine Komponente und einen Ereignisnamen definiert. Der Absender eines Ereignisses gibt beim Versenden einer Nachricht den Namen des Ereignisses an.
Um das Erzeugen von Empfangsmustern (Slot) zu vereinfachen, können Jobs, Komponenten und Ereignisnamen zu Gruppen zusammengefasst werden (job_group(), component_group(), name_group()).
Diese Klasse repräsentiert eine Nachricht im Nachrichtensystem. Sie wird nur intern verwendet.
Registriert einen Empfänger mit einem Empfangsmuster im Nachrichtensystem.
Das Empfangsmuster besteht aus den drei Attributen job, component und name. Diese Attribute können jeweils einen Namen, einen Gruppennamen oder None enthalten. Sie werden benutzt, um zu entscheiden, ob eine Nachricht an den Empfänger übergeben wird oder nicht.
Üblichweise wird als Empfänger ein Listener-Objekt verwendet, welches mit einem Slot-Objekt und einem Callback initialisiert wurde.
Der Empfänger muss den Aufruf als Funktion unterstützen. Er wird für die Übergabe der Nachricht mit den folgenden vier Parametern aufgerufen:
Die Parameter werden in der dargestellten Reihenfolge als Positionsparameter übergeben.
Siehe auch: Slot, Listener, remove_listener(), send()
Richtet eine Absendergruppe auf Komponentenebene ein.
Parameter
Beschreibung
Durch eine Absendergruppe auf Komponentenebene kann ein Slot anstelle eines spezifischen Komponentennamens einen Gruppennamen im Empfangsmuster angeben.
Siehe auch: Slot, Listener, add_listener(), remove_listener(), orbit_framework.Job.add_listener(), orbit_framework.Component.add_listener()
Richtet eine Absendergruppe auf Job-Ebene ein.
Parameter
Beschreibung
Durch eine Absendergruppe auf Job-Ebene kann ein Slot anstelle eines spezifischen Jobnamens einen Gruppennamen im Empfangsmuster angeben.
Siehe auch: Slot, Listener, add_listener(), remove_listener(), orbit_framework.Job.add_listener(), orbit_framework.Component.add_listener()
Richtet eine Absendergruppe auf Ereignisebene ein.
Parameter
Beschreibung
Durch eine Absendergruppe auf Ereignisebene kann ein Slot anstelle eines spezifischen Ereignisnamens einen Gruppennamen im Empfangsmuster angeben.
Siehe auch: Slot, Listener, add_listener(), remove_listener(), orbit_framework.Job.add_listener(), orbit_framework.Component.add_listener()
Entfernt einen Empfänger und sein Empfangsmuster aus dem Nachrichtensystem.
Bemerkung
Es muss das gleiche Objekt übergeben werden, wie an add_listener() übergeben wurde.
Siehe auch: add_listener()
Sendet eine Nachricht über das Nachrichtensystem.
Parameter
Beschreibung
Die Nachricht wird in die Warteschlange eingestellt. Der Aufruf kehrt sofort wieder zum Aufrufer zurück.
Siehe auch: add_listener()
Startet das Nachrichtensystem.
Zur Weiterleitung der Nachrichten wird ein dedizierter Thread gestartet.
Siehe auch: stop()
Beendet das Nachrichtensystem.
Parameter
Blockiert solange bis der dedizierte Thread für die Nachrichtenverteilung beendet wurde und kehrt erst anschließend zum Aufrufer zurück.
Siehe auch: start()
Schreibt eine Nachverfolgungsmeldung mit dem Ursprung MessageBus auf die Konsole.
Diese Klasse repräsentiert ein Empfangsmuster für das Nachrichtensystem.
Parameter
Beschreibung
Das Empfangsmuster wird verwendet, um ein Callback für den Nachrichtenempfang im Nachrichtensystem zu registrieren. Das Empfangsmuster kann durch einen Aufruf der Methode listener() mit einem Callback zu einem Empfänger verknüpft werden.
Für die Erzeugung von Slot-Instanzen gibt es einige statische Factory-Methoden: for_job(), for_component() und for_name().
Siehe auch: listener(), Listener
Gibt den Namen der versendenden Komponente, 'JOB', einen Gruppennamen oder None zurück.
Erzeugt ein Empfangsmuster, welches auf die Nachrichten aller Komponenten mit dem übergegebenen Namen passt. Es kann auch ein Gruppenname übergegen werden.
Erzeugt ein Empfangsmuster, welches auf alle Nachrichten von einem Job passt. Es kann auch ein Gruppenname übergegen werden.
Erzeugt ein Empfangsmuster, welches auf alle Nachrichten für das übergebene Ereignis passt. Es kann auch ein Gruppenname übergegen werden.
Gibt den Namen des versendenden Jobs, einen Gruppennamen oder None zurück.
Gibt den Ereignisnamen, einen Gruppenname oder None zurück.
Gibt das Filterprädikat oder None zurück.
Gibt die Transformationsfunktion für den Nachrichteninhalt oder None zurück.
Diese Klasse repräsentiert einen Empfänger für das Nachrichtensystem.
Parameter
Ein Empfänger kann mit Hilfe der folgenden Methoden für den Nachrichtenempfang registriert werden: MessageBus.add_listener(), orbit_framework.Job.add_listener() und orbit_framework.Component.add_listener().
Siehe auch: Slot, MessageBus
Gibt den Namen der versendenden Komponente, 'JOB', einen Gruppennamen oder None zurück.
Gibt den Namen des versendenden Jobs, einen Gruppennamen oder None zurück.
Gibt den Ereignisnamen, einen Gruppenname oder None zurück.
Gibt die Bezeichnung des Empfängers zurück.
Die Bezeichnung wird beim Protokollieren der Nachrichten verwendet, um den Weg der Nachrichten kenntlich zu machen.
Werden die Methoden orbit_framework.Job.add_listener() oder orbit_framework.Component.add_listener() verwendet, wird dieses Attribut automatisch gesetzt. Wird der Empfänger direkt mit MessageBus.add_listener() registriert, sollte dieses Attribut vorher gesetzt werden, um den Empfänger zu bezeichnen.
Diese Klasse implementiert einen Mehrfachempfänger. Das ist ein Mechanismus für den Empfang von Nachrichten über das Nachrichtensystem, bei dem mehrere Empfangsmuster mit einem Callback verknüpft werden.
Parameter
Beschreibung
Der Mehrfachempfänger wird mit einem Namen und einem Callback initialisiert. Anschließend können mit add_slot() mehrere Empfangsmuster eingerichtet werden.
Bemerkung
Der Mehrfachempfänger erzeugt für jedes Empfangsmuster einen eigenen Empfänger. Passt eine Nachricht zu mehr als einem Empfangsmuster, wird das Callback für die Nachricht auch mehr als einmal aufgerufen.
Der Mehrfachempfänger muss mit dem Nachrichtensystem verknüpft werden, damit er funktioniert. Dazu wird die Methode activate() aufgerufen.
Siehe auch: Listener, add_slot(), activate()
Verknüpft den Mehrfachempfänger mit dem Nachrichtensystem.
Löst die Verbindung des Mehrfachempfängers vom Nachrichtensystem.
Gibt eine Sequenz mit allen zur Zeit erzeugten Empfängern zurück.
Gibt den Namen des Empfängers zurück.
Entfernt ein Empfangsmuster.
Bemerkung
Es muss die selbe Referenz auf das Empfangsmuster übergeben werden, wie an add_slot() übergeben wurde.
Gibt eine Sequenz mit allen eingerichteten Empfangsmustern zurück.