Main Page | Class List | Class Members

UfClnt Class Reference

UfClnt, der Userface-Client, stellt einer Anwendung die Möglichkeit zur Verfügung Gerätezugriffe durchzuführen auf Rechnern, die kein Kontrollsystem laufen haben, wo also direkte Gerätezugriffe via Userface nicht möglich sind. More...

List of all members.

Public Member Functions

 UfClnt () throws IOException
 Stellt die Verbindung zu einem Userface-Server her.

void access (String nomen, String prop, String pCls, int vAcc, EqData para, EqData data, UsrCompl cmpl) throws IOException
 Führt einen synchronen Gerätezugriff aus.

void close () throws IOException
 Schließt die Verbindung zum Userface-Server.

void closeForced () throws IOException
 Schließt die Verbindung zum Userface-Server ohne vorherige Mitteilung an denselben.


Protected Member Functions

void finalize () throws Throwable
 Schließt die Verbindung zum Userface-Server durch Aufruf der Methode UfClnt#close und ruft anschließend die Methode finalize() der Superklasse auf.


Detailed Description

UfClnt, der Userface-Client, stellt einer Anwendung die Möglichkeit zur Verfügung Gerätezugriffe durchzuführen auf Rechnern, die kein Kontrollsystem laufen haben, wo also direkte Gerätezugriffe via Userface nicht möglich sind.

UfClnt kommuniziert mit einem Userface-Server (die zur Zeit auf AXP703 und AXP704 laufen), welcher die Gerätezugriffe via Userface durchführt. In der Umgebungsvariablen UFSMGR_HOSTS m"ussen die Namen der Hosts durch ':' getrennt angegeben sein.

Zur Zeit sind nur synchrone Zugriffe mittels der Methode access realisiert. Diese Methode hat zudem noch einen recht prozedurelen Charakter, was daran liegt, dass der EquipmentAccess des Userface in etwa abgebildet wurde.

UfClnt kann nur zwei Zustände einnehmen: 1. Offen (open) und verfügbar für die Kommunikation mit dem Userface-Server. 2. Geschlossen (closed), wobei die Kommunikation mit dem Server beendet ist und auch nicht wieder aufgenommen werden kann (es gibt kein re-open). Der Versuch eines access über ein nicht offenes UfClnt-Objekt führt zu einer IOException. (Was, wenn ein Objekt benutzt wird, das beim Öffnen einen Fehler bekam? !!!???)

(Security-Fragen: Wer darf überhaupt zugreifen, wer nicht? !!!???)

Author:
Udo Krause

Ludwig Hechler

Version:
0.3, 23. Jan. 2008


Constructor & Destructor Documentation

UfClnt.UfClnt  )  throws IOException
 

Stellt die Verbindung zu einem Userface-Server her.

Welche Hosts angefragt werden, ist in der Umgebungsvariablen 'UFSMGR_HOSTS' angegeben. Konnte die Verbindung ohne Fehler hergestellt werden, ist sie offen für die Kommunikation zum und vom Server. Die Verbindung muss bei Beendigung der Anwendung wieder geschlossen werden.

Es ist möglich, mehrere Objekte zu kreieren, die dann jeweils einen eigenen Kanal zum Server darstellen.

(Wie sieht's bei mehreren Threads aus?)

Exceptions:
UnknownHostException wenn der Host-Rechner unbekannt ist.
ConnectException wenn auf dem Host kein Userface-Server läuft.
See also:
UfClnt.close


Member Function Documentation

void UfClnt.access String  nomen,
String  prop,
String  pCls,
int  vAcc,
EqData  para,
EqData  data,
UsrCompl  cmpl
throws IOException
 

Führt einen synchronen Gerätezugriff aus.

Das heißt, dass access erst zurückkehrt, wenn eine Antwort von der Gerätesoftware vorliegt oder ein Timeout stattgefunden hat, weil die Antwort nicht oder nicht rechtzeitig eingetroffen ist.

Welche und wieviel Parameter und Daten zu verschicken sind, ist im jeweiligen EqData-Objekt beschrieben. Sollen keine Parameter oder Daten verschicken werden, kann entweder ein leeres Objekt (EqData.length() == 0) oder eine null-Referenz übergeben werden.

Beim Lesen von Daten gibt es drei Möglichkeiten:

  1. Die Anwendung stellt den benötigten Speicher, der die Daten aufnehmen soll, selbst zur Verfügung. Beim Empfang überprüft access, ob die Kapazität des Speichers ausreicht, um die Daten aufzunehmen. Ist dies nicht der Fall, tritt beim Kopieren der Daten eine ArrayOutOfBoundsException auf.
  2. Die Anwendung stellt keinen Speicher zur Verfügung, gibt aber eine Speichergröße an. Beim Empfang erzeugt access den Speicher und überprüft, ob die Kapazität des Speichers ausreicht, um die Daten aufzunehmen. Ist dies nicht der Fall, tritt beim Kopieren der Daten eine ArrayOutOfBoundsException auf.
  3. Die Anwendung stellt weder einen Speicher zur Verfügung, noch gibt sie eine Speichergröße an. Beim Empfang erzeugt access den Speicher mit einer Größe, die ausreicht, um die empfangenen Daten aufzunehmen.
Wie ein entsprechendes Daten-Objekt erzeugt wird, ist unter EqData beschrieben.

Parameters:
nomen die Nomenklatur des Gerätes, des Gruppenmikros oder der SE
prop die Property
pCls die Property-Klasse: "R", "W" oder "N"; die Angabe von "RA" bzw. "WA" ist nicht notwendig, aber erlaubt
vAcc der virtuelle Beschleuniger; 0 bis 15 ist erlaubt
para die Parameter der Property
data die zu sendenden Daten bzw. Referenz auf den Speicher für die zu empfangenen Daten
cmpl der USR-Completion-Status inclusive Timestamp, Eventstamp und EFICD-Infos
Exceptions:
UfClntException wenn die angegebene Property-Klasse nicht "R", "W" oder "N" ist, oder wenn bei der Property-Klasse "W" der Parameter data == null ist.
UfSvrException wenn ...ja wann eigentlich? !!!???
UfcException wenn Userface einen Fehler an den Userface-Server zurück gegeben hat.
XsrException wenn eine SSR oder eine USR einen Fehler zurück gegeben hat.
IOException wenn es zu Kommunikationsproblemen zwischen Client und Server gekommen ist.
See also:
EqData

void UfClnt.close  )  throws IOException
 

Schließt die Verbindung zum Userface-Server.

Dabei wird dem Server mitgeteilt, dass die Verbindung nun geschlossen wird.

Exceptions:
IOException wenn es dabei zu Kommunikationsproblemen zwischen Client und Server gekommen ist.

void UfClnt.closeForced  )  throws IOException
 

Schließt die Verbindung zum Userface-Server ohne vorherige Mitteilung an denselben.

Diese Methode sollte nur benutzt werden, wenn die Verbindung zum Server bereits gestört oder unterbrochen ist.

Exceptions:
IOException wenn Fehler auftreten beim Schließen des In- oder Outstreams oder des Sockets.

void UfClnt.finalize  )  throws Throwable [protected]
 

Schließt die Verbindung zum Userface-Server durch Aufruf der Methode UfClnt#close und ruft anschließend die Methode finalize() der Superklasse auf.

Diese Methode wird vom Garbage Collector aufgerufen, wenn es keine Referenz auf dieses Objekt mehr gibt.

Exceptions:
Throwable der Superklasse


The documentation for this class was generated from the following file:
Generated on Thu Jan 24 10:17:04 2008 for Download S-Record Files by doxygen 1.3.5