Der Broker stellt die zentrale Verwaltungsinstanz des Speichersystems dar. Er verteilt die von den Schnittstellenkomponenten eingehenden Aufträge an die Speicher, er beobachtet alle Netzverbindungen und steuert das ganze Speichersystem.
Die Konfiguration des Brokers wird aus einer Konfigurationsdatei gelesen. Die möglichen Parameter sind in Tabelle 5.3 zusammengestellt.
|
Verbindet sich ein Monitor-/Steuerungswerkzeug an den Broker, so kann die aktuelle Konfiguration des Brokers durch Senden eines CMD_CONFGET Kommandos erfragt werden. Diese beinhaltet Informationen über
Allen Speichern und dem Broker selbst wird ein innerhalb des Speichersystems eindeutiger Name zugeordnet, der zusammen mit der Konfigurationsinformationen an das Steuerungswerkzeug übertragen wird. Über das Kommando CMD_CHGST <Elementname> <Zustand> kann der Zustand dieser Elemente verändert werden. Der Parameter <Zustand> kann die Werte activ, passiv oder terminated annehmen, um Komponenten zu aktivieren, passivieren oder zu beenden.
Um den Broker anzuhalten oder fortzusetzen, stehen die zwei Kommandos CMD_PAUSE und CMD_CONT zur Verfügung. Zum Wechseln zwischen automatischer Verteilung der Aufträge durch den Broker und manueller Verteilung durch das Monitor-/Steuerungswerkzeug existieren die Kommandos CMD_AUTO und CMD_MAN.
Übermittelt das Monitor-/Steuerungswerkzeug ein Kommando der Form
CMD_MAPJOB <brokerinterne Auftrags-ID> <Speichername>,
während der Broker im Modus für manuelle Verteilung ist, so übermittelt der Broker den Auftrag zur Ausführung an den Speicher und vermerkt dies in seiner Auftragsverwaltung.
Weiterhin besteht die Möglichkeit die Speicher und den Broker durch Senden eines CMD_EXIT oder CMD_QUIT Kommandos auf einmal zu beenden. Im Unterschied zum CMD_QUIT Kommando wartet das CMD_EXIT Kommando bis alle in Bearbeitung befindlichen Aufträge abgearbeitet wurden, um die Speicher und den Broker zu beenden. Das CMD_QUIT Kommando trennt die Speicher und beendet den Broker sofort. Um einen Speicher zu beenden, sendet der Broker ein CMD_EXIT an ihn.
Die Klasse c_joblist stellt Methoden bereit, um neue Aufträge der Liste hinzuzufügen (addjob), zu löschen (remjob) oder zu modifizieren, sowie Methoden, die unter Angabe eines Socketdeskriptors, die korrespondierende Verbindung ermitteln (get_job_by_iffd, get_job_by_repfd). Abbildung 5.2 zeigt die Klassendefinition der Klasse. Diese Klasse ermöglicht die Identifikation von Auftraggebern und den jeweiligen Speichern, ohne den Auftrag oder das Ergebnis zu lesen oder zu modifizieren. Die Zuordnung erfolgt alleine über die Netzverbindung.