ATOS - Around The Operating System Das ATOS-Magazin 2/96

# OLGA 4/7

Initialisierung

Das OLGA-Protokoll besteht im wesentlichen aus der Kommunikation mit dem OLGA-Manager. Dazu muß man die AES-ID des Managers kennen, die wie folgt ermittelt wird:

    a) Wenn appl_find("OLGA    ") erfolgreich ist, hat man den Manager
       schon gefunden.
    b) Ansonsten wird nun die Environmentvariable OLGAMANAGER mit getenv()
       ausgewertet. Dort kann ein kompletter Zugriffspfad stehen! Zunächst
       extrahiert man aus diesem Pfad einen Programmnamen für appl_find()
       und geht entsprechend wie unter a) vor.
       Konnte auch dieser Name nicht gefunden werden, startet man das
       Programm, das von OLGAMANAGER bezeichnet wird, mit shel_write()
       nach.
    c) Wenn das bisherige nicht zum Erfolg geführt hat, gibt es offen-
       sichtlich keinen OLGA-Manager, man muß nun nach einem OLE-Manager
       suchen. Dazu macht man - analog zu a) - ein appl_find("OLEMANGR").
    d) Konnte auch dieses Programm nicht gefunden werden, wertet man nun
       noch die Environmentvariable OLEMANAGER wie unter b) aus.

Hat man einen Manager gefunden, schickt man ihm mit appl_write() folgende Message:

    OLE_INIT
    (App -> Manager)
    msg[0] $4950 (18768)
    msg[1] apID
    msg[2] 0
    msg[3] Applikation ist Server (1), Client (2) oder beides (3)
    msg[4] 0
    msg[5] 0
    msg[6] 0
    msg[7] maschinenlesbarer XAcc-Programmtyp (oder 0):
                    "WP" ($5750) = Textverarbeitung
                    "DP" ($4450) = DTP
                    "ED" ($4544) = Texteditor
                    "DB" ($4442) = Datenbank
                    "SS" ($5353) = Tabellenkalkulation
                    "RG" ($5247) = Rastergrafikprogramm
                    "VG" ($5647) = Vektorgrafikprogramm
                    "GG" ($4747) = allgemeines Grafikprogramm
                    "MU" ($4d55) = Musikanwendung
                    "CD" ($4344) = CAD
                    "DC" ($4443) = Datenkommunikation
                    "DT" ($4454) = Desktop
                    "PE" ($5045) = Programmierumgebung

Der OLGA-Manager verschickt als Bestätigung die OLGA_INIT-Message. Applikationen sollten den OLGA-Mechanismus erst verwenden, nachdem sie folgende Message erhalten haben und diese keinen Fehler signalisiert hat. Für Applikationen, die während der Startphase Dokumente öffnen, kann es allerdings sinnvoll sein, auch ohne empfangene OLGA_INIT-Message die nötigen OLGA-Messages zu verschicken, nur sollten bei einer solchen Applikation keine Fehlfunktionen auftreten, falls sich der Manager doch nicht meldet.

    OLGA_INIT
    (Manager -> App)
    msg[0] $1236 (4662)
    msg[1] manID
    msg[2] 0
    msg[3] reserviert
    msg[4] reserviert
    msg[5] 0
    msg[6] 0
    msg[7] 0=Fehler, sonst: OLGA-Manager korrekt initialisiert

Beim Programmende wird dem Manager folgende Message geschickt. Wenn sich ein OLGA-Client abmeldet, werden automatisch alle zugehörigen Links und Documents gelöscht.

Außerdem verschickt der Manager diese Nachricht an alle angemeldeten Applikationen, wenn er vorzeitig beendet wird.

    OLE_EXIT
    (App -> Manager, Manager -> App)
    msg[0] $4951 (18769)
    msg[1] apID bzw. manID
    msg[2] 0
    msg[3] 0
    msg[4] 0
    msg[5] 0
    msg[6] 0
    msg[7] 0

Wenn ein Manager nachgestartet wird, verschickt er an alle erreichbaren Applikationen folgende Message:

    OLE_NEW
    (Manager -> App)
    msg[0] $4952 (18770)
    msg[1] manID
    msg[2] 0
    msg[3] reserviert
    msg[4] reserviert
    msg[5] reserviert
    msg[6] reserviert
    msg[7] reserviert

Eine OLGA-fähige Applikation muß daraufhin manID als AES-ID des OLGA-Managers übernehmen und diesem Manager eine OLE_INIT-Message senden. Bei der Programmierung muß man beachten, daß OLE_NEW, OLE_INIT und OLGA_INIT beliebig oft verschickt werden können, da sie auch zur Aktualisierung der Manager- bzw. Applikationsdaten benutzt werden.

Hier geht es weiter.