Python Device Access einrichten für mehrere Versionen von corbaifc
Motivation
Im Python-Interface für Gerätezugriffe (
devacc
) werden über die Klasse
devacc.Device
Proxy-Objekte der Front-End Geräte angelegt.
Diese
devacc.Device
-Objekte behandeln intern die Eigenschaften der CORBA-Schnittstelle
der jeweiligen Front-End Geräte.
Somit muss die
devacc.Device
an die jeweilige CORBA Zugriffsschnittstelle angepasst sein.
Mit der Einführung der Versionierung der CORBA-Zugriffsschnittstelle kann nun auf
Client-Seite erkannt werden, welche Schnittstelle die Front-End Geräte implementieren.
Damit ist es nun möglich, mehrere Schnittstellen parallel zu unterstützen.
Mit der im Folgenden beschriebene Einrichtung unterstützt
devacc
mehrere
CORBA-Schnittstellen.
Die Auswahl der richtigen Schnittstelle ist transparent für den Benutzer.
Derzeit (Aug. 2008) sind das
CorbaInterface
und
CorbaInterface01
.
Implementation
Das Modul
devacc
ist ausgelegt auf eine Haupt-Schnittstelle. Derzeit, also Aug. 2008, ist das =nop>Interface=für Release 09.
Mit der normalen Installation wird nur diese Schnittstelle unterstützt.
Wenn die entsprechenden internen Module zusätzlich bereitgestellt werden (siehe unten),
wird daneben auch eine zweite Schnittstelle unterstützt.
Das ist derzeit, also Aug. 2008,
nterface01
ab Release 10.
Die Bezüge zur CORBA Schnittstelle wurden im Konstruktor der Klasse
devacc.Device
.
Bei der Instatiierung eines Objektes dieser Klasse werden nacheinander die
Haupt-Schnittstelle und, wenn vorhanden, die zweite Schnittstelle durchprobiert.
Dar Bezug zur jeweiligen CORBA-Schnittstelle wird sich im Objekt gemerkt,
damit sie gegebenenfalls spezifisch behandelt werden kann.
Einrichtung
Um die zweite Schnittstelle (also
CorbaInterface01
) zusätzlich verwenden zu können, muss man:
- das idl-File besorgen (corbaifc.idl, für die Version 01)
- das File umbenennen, z.B. corbaifc.idl -> corbaifc-01.idl
- das umbenannte IDL-File übersetzen,
$ omniidl -b python corbaifc-01.idl
- und den generierten Code in die Python-Directory schaffen (nach /usr/local/acc/python/bel/), als da ist corbaifc_01_idl.py und die Directories
CorbaInterface01/
und CorbaInterface01__POA/
Wozu das IDL-File umbenennen?
Der IDL-Compiler erzeugt für den Zugriffscode ein Python-File mit dem gleichen Namen wie das IDL-File.
Da das IDL-File für alle Versionen der Schnittstelle gleich heisst (immer corbaifc.idl),
würde er für beide Versionen den Zugriffscode in dasselbe File schreiben
und damit die zuerst angelegte Version überschreiben.
Der neue Name für corbaifc.idl ist beliebig,
er muss nur irgendwie anders als vorher sein.
Das jeweilige File mit dem Zugrifsscode wird gefunden über Einträge
in
init.py in den versionsspezifisch angelegten Directories
CorbaInterface/
und
CorbaInterface01/
.