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) = ProgrammierumgebungDer 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 initialisiertBeim 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] 0Wenn 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] reserviertEine 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.