de.bsvrz.sys.dcf77.zeitverw
Class Zeitverwaltung

java.lang.Object
  extended by de.bsvrz.sys.dcf77.zeitverw.Zeitverwaltung

public class Zeitverwaltung
extends java.lang.Object

Hauptmodul der SWE DCF77 (Zeitverwaltung). Das Modul Zeitverwaltung erfragt zyklisch den Zustand des NTP Dienstes (Zeitserverdienstes) und protokolliert Zustandänderungen an den DAV (Aspekt "Rechner.DcfStatus.Zustand"). Die Zeitverwaltung kommuniziert mit dem NTP Server Client ueber die Schnittstellle IntpAllgemein.

Author:
J.Chriesten

Field Summary
private  de.bsvrz.sys.funclib.debug.Debug _debug
          Ausgabe Logger
private  DCFdav m_dcfDAV
          DCF DAV Kommunikator.
private  IdcfTester m_dcfTester
           
private  IntpAllgemein m_ntpAllgemein
          von DefaultNTP abgeleiteten Klasse.
private  java.lang.String m_ntpKlasse
          Name der NTP Clientklasse.
private  java.lang.String m_ntpKlassenParameter
          Optionaler Parameterstring.
private  SenderThread m_SenderThread
          Thread zur Ueberwachung des NTP Zustandes
private  long m_zyklusZeit
          Zeitdauer zwischen 2 Zeitserverabfragen in sec
 
Constructor Summary
Zeitverwaltung()
           
 
Method Summary
 void dataRequest(java.lang.Object object, java.lang.Object dataDescription, byte state)
           
(package private)  IntpAllgemein genNtpAllgemeinObject(java.lang.String ntpKlasse)
          Erzeugt aus dem uebergebenen Klassennamen ein Objekt vom Type IntpAllgemein
 IdcfTester get_dcfTester()
          Liefert die Instanz des IdcfTester.
 IdcfTestReader get_dcfTestReader()
          Liefert die Instanz des IdcfTestReader.
 IntpAllgemein get_ntpAllgemein()
          Liefert die ntp Client Instanz, die über das Interface IntpAllgemein angesprochen wird.
 void init(java.lang.String[] args)
          Hauptroutine zur Ausführung der Zeitverwaltung.
 void initialize(java.lang.Object davConnection)
           
 boolean isRequestSupported(java.lang.Object object, java.lang.Object dataDescription)
           
static void main(java.lang.String[] args)
          startet das Modul Zeitverwaltung
 void parseArguments(java.lang.Object argumentList)
           
 void parseZeitverwArgumente(java.lang.String[] args)
          Auswertung der Parameter der Zeitverwaltung
 void reinit()
          Reinitialisierung der Zeitverwaltung.
private  void startSenderThread(IntpAllgemein ntpAllgemein, DCFdav dcfDAV, long zyklusZeit)
          lokale Hilfsfunktion.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_debug

private de.bsvrz.sys.funclib.debug.Debug _debug
Ausgabe Logger


m_zyklusZeit

private long m_zyklusZeit
Zeitdauer zwischen 2 Zeitserverabfragen in sec


m_ntpKlasse

private java.lang.String m_ntpKlasse
Name der NTP Clientklasse. Sie muss IntpAllgemein implementieren.


m_ntpKlassenParameter

private java.lang.String m_ntpKlassenParameter
Optionaler Parameterstring. Wird der IntpKlasse uebergeben, falls diese einen Konstruktor vorsieht


m_ntpAllgemein

private IntpAllgemein m_ntpAllgemein
von DefaultNTP abgeleiteten Klasse.


m_dcfDAV

private DCFdav m_dcfDAV
DCF DAV Kommunikator. Objekt besitzt Datenverteilerverbindung und stellt Methoden zur Versendung und Empfang des Aspekts recher.dcf.zustand an.


m_dcfTester

private IdcfTester m_dcfTester

m_SenderThread

private SenderThread m_SenderThread
Thread zur Ueberwachung des NTP Zustandes

Constructor Detail

Zeitverwaltung

public Zeitverwaltung()
Method Detail

get_ntpAllgemein

public IntpAllgemein get_ntpAllgemein()
Liefert die ntp Client Instanz, die über das Interface IntpAllgemein angesprochen wird.

Returns:
ntp Client Instanz

get_dcfTestReader

public IdcfTestReader get_dcfTestReader()
Liefert die Instanz des IdcfTestReader. siehe IdcfTestReader

Returns:
Instanz des IdcfTestReader

get_dcfTester

public IdcfTester get_dcfTester()
Liefert die Instanz des IdcfTester. siehe IdcfTester.

Returns:
Instanz des IdcfTester

genNtpAllgemeinObject

IntpAllgemein genNtpAllgemeinObject(java.lang.String ntpKlasse)
Erzeugt aus dem uebergebenen Klassennamen ein Objekt vom Type IntpAllgemein

Parameters:
ntpKlasse - Klassennamen. Die Klasse muss das Interface IntpAllgemein implementieren.
Returns:
Generiertes Objekt vom Type IntpAllgemein

parseZeitverwArgumente

public void parseZeitverwArgumente(java.lang.String[] args)
Auswertung der Parameter der Zeitverwaltung

Parameters:
args - Argumente siehe main Methode

startSenderThread

private void startSenderThread(IntpAllgemein ntpAllgemein,
                               DCFdav dcfDAV,
                               long zyklusZeit)
lokale Hilfsfunktion. Startet den Senderthread

Parameters:
ntpAllgemein - Schnittstellenobjekt
dcfDAV - Datenverteilerobjekt zum lesen/schreiben rechner.dcfStatus.zustand
zyklusZeit - Länge der Wartezyklen des Sendertrhread

init

public void init(java.lang.String[] args)
Hauptroutine zur Ausführung der Zeitverwaltung. Aufbau der Verbindung zum Datenverteiler und Anmeldung Sender und Empfaenger für Aspekt Rechner.dcfStatus.Zustand Instanziierung der SS IntpAllgemein (== NTP Server) Starten des SenderThreads

Parameters:
args - Programmargumente siehe main - Methode

reinit

public void reinit()
Reinitialisierung der Zeitverwaltung. Abmelden DAV Sender und - Empfaenger für Aspekt Rechner.dcfStatus.Zustand Abbau der Verbindung zum Datenverteiler Aufruf IntpAllgemein.beenden (stoppen realen NTPClient) Stoppen des SenderThreads


dataRequest

public void dataRequest(java.lang.Object object,
                        java.lang.Object dataDescription,
                        byte state)

isRequestSupported

public boolean isRequestSupported(java.lang.Object object,
                                  java.lang.Object dataDescription)

initialize

public void initialize(java.lang.Object davConnection)
                throws java.lang.Exception
Throws:
java.lang.Exception

parseArguments

public void parseArguments(java.lang.Object argumentList)
                    throws java.lang.Exception
Throws:
java.lang.Exception

main

public static void main(java.lang.String[] args)
startet das Modul Zeitverwaltung

Parameters:
args - Argumente. Werden im folgenden aufgeführt. Die in spitzer Klammer uebrgebenen Werte dienen als Beispiel
-datenverteiler=<192.0.1.27:8083>; DAV Server und Port
-debugLevelStdErrText=; DAV Errorlevel
-benutzer=; Benutzer des DAV
-authentifizierung=; DAV Passwortdatei
-rechner=; optionale RechnerPid. Das DaV Objekt in das archiviert wird. Standardmäßig der lokale Rechner.
-zyklusZeit=<60>; Zykluszeit SenderThread, -1: immer Warten
-ntpKlasse=; NTP Client, Klasse muss Interface
IntpAllgemein realisieren -ntpKlassenParameter=<"cmd=ntpq -p ---zyklusZeit=2 ---maxZyklen=20>"; optionaler Parameterstring fuer -ntpKlasse. Die einzelnen Parameter sind durch --- getrennt