de.bsvrz.sys.dcf77.zeitverw
Class SenderThread

java.lang.Object
  extended by java.lang.Thread
      extended by de.bsvrz.sys.dcf77.zeitverw.SenderThread
All Implemented Interfaces:
IntpTrigger, java.lang.Runnable

public class SenderThread
extends java.lang.Thread
implements IntpTrigger

Klasse die mit dem NTP (NetworkTimeProkol) Client kommuniziert. Ueber das Interface IntpAllgemein wird zyklisch der NTP Zustand auf dem aktuellen Recher erfragt. Aenderungen werden im DAV ueber den Aspekt Recher.dcfStatus.Zustand protokolliert

Author:
ChriestenJ

Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
 
Field Summary
private  de.bsvrz.sys.funclib.debug.Debug _debug
           
private  DataAspZustand m_dataAspZustandAlt
          letzter NTP Zustands
private  DataAspZustand m_dataAspZustandNeu
          aktueller NTP Zustands
private  DCFdav m_dcfDAV
          DCF DAV Verbindung.
private  java.lang.Boolean m_erstesMal
          lokale Hilfsvariable zur Steuerung des waits
private  IntpAllgemein m_ntpAllgemein
          Schnittstellenobjekt zum NTP Server
private  boolean m_schreibeInDav
           
(package private)  java.lang.Boolean m_shutDown
          soll der Thread beendet werden?
private  long m_zyklusCount
           
private  long m_zyklusCountMax
           
private  long m_zyklusZeit
          Zeitdauer zwischen 2 Zeitserverabfragen in sec
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
private SenderThread()
          Konstruktor3 nur fuer lokale Tests
  SenderThread(IntpAllgemein ntpAllgemein, DCFdav dcfDAV, long zyklusZeit)
          Konstruktor1: Initialisiert das Objekt.
  SenderThread(IntpAllgemein ntpAllgemein, DCFdav dcfDAV, long zyklusZeit, long zyklusCountMax)
          Konstruktor2: Initialisiert das Objekt.
 
Method Summary
 void dataRequest(java.lang.Object object, java.lang.Object dataDescription, byte state)
           
 DataAspZustand get_dataAspZustandNeu()
          gibt aktuellen NTP Zustands zurueck (== den zuletzt über das Interface IntpAllgemein gelesenen Zustand).
private  void initialize_SenderThread(IntpAllgemein ntpAllgemein, DCFdav dcfDAV, long zyklusZeit, long zyklusCountMax)
          lokale Hilfsroutine fuer die Konstruktoren
 boolean isRequestSupported(java.lang.Object object, java.lang.Object dataDescription)
           
 boolean leseNTPStatus()
          Liest den aktuellen NTP Zustand return true Zustand seit dem letzten lesen geaendert, false sonst
private  void leseUndSendeNTPStatus()
           
private  void leseUndSendeNTPStatusOld()
          Liest den aktuellen NTP Zustand Bei Aenderungen wird er ueber den DAV protokolliert.
static void main(java.lang.String[] args)
          Testroutine fuer das lokale Modul.
private  void mywait(long timeout)
          Wrapper Funktion fuer wait() bei timeout = -1000 wird ewig gewartet beim ersten Aufruf nach Obejtkinstanziierung wird nicht gewartet
 void run()
          In einem Endlosloop wird zyklisch der Status des NTP (Zeitservers) eingelesen Bei Datenaenderungen wird der geaenderte Status im DAV protokolliert.
private  void sendeNTPStatus()
           
 void set_schreibeInDav(boolean schreibeInDav)
          setzt m_schreibeInDav;
 void set_shutDown()
          Beendet den Thread dieser Instanz
 void setTrigger()
          Implementation der Schnittstelle IntpTrigger Methode zum Unterbrechen der wait-Zyklen im Sender Thread.
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_debug

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

m_ntpAllgemein

private IntpAllgemein m_ntpAllgemein
Schnittstellenobjekt zum NTP Server


m_dcfDAV

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


m_zyklusZeit

private long m_zyklusZeit
Zeitdauer zwischen 2 Zeitserverabfragen in sec


m_dataAspZustandNeu

private DataAspZustand m_dataAspZustandNeu
aktueller NTP Zustands


m_schreibeInDav

private boolean m_schreibeInDav

m_dataAspZustandAlt

private DataAspZustand m_dataAspZustandAlt
letzter NTP Zustands


m_shutDown

java.lang.Boolean m_shutDown
soll der Thread beendet werden?


m_erstesMal

private java.lang.Boolean m_erstesMal
lokale Hilfsvariable zur Steuerung des waits


m_zyklusCount

private long m_zyklusCount

m_zyklusCountMax

private long m_zyklusCountMax
Constructor Detail

SenderThread

public SenderThread(IntpAllgemein ntpAllgemein,
                    DCFdav dcfDAV,
                    long zyklusZeit)
Konstruktor1: Initialisiert das Objekt.

Parameters:
ntpAllgemein - Schnittstellenobjekt zum NTP Server
dcfDAV - Ueber dieses dcfDAV Objekt wird der DCF Zustand verschickt.
zyklusZeit - Wartezeit zwischen 2 Zeitserverabfragen in sec. (-1: nur auf Interrupts reagieren).

SenderThread

public SenderThread(IntpAllgemein ntpAllgemein,
                    DCFdav dcfDAV,
                    long zyklusZeit,
                    long zyklusCountMax)
Konstruktor2: Initialisiert das Objekt.

Parameters:
ntpAllgemein - Schnittstellenobjekt zum NTP Server
dcfDAV - Ueber dieses dcfDAV Objekt wird der DCF Zustand verschickt.
zyklusZeit - Wartezeit zwischen 2 Zeitserverabfragen in sec. (-1: nur auf Interrupts reagieren).
zyklusCountMax - Maximalzahl der Zyklen, die der SenderThread ausführt (-1: unendlich)

SenderThread

private SenderThread()
Konstruktor3 nur fuer lokale Tests

Method Detail

set_schreibeInDav

public void set_schreibeInDav(boolean schreibeInDav)
setzt m_schreibeInDav;

Parameters:
schreibeInDav - false: NTP Zustände nicht in den DaV schreiben ; nur für Tests.

get_dataAspZustandNeu

public DataAspZustand get_dataAspZustandNeu()
gibt aktuellen NTP Zustands zurueck (== den zuletzt über das Interface IntpAllgemein gelesenen Zustand). Methode wird fuer JUNIT Test verwendet leseNTPStatus


set_shutDown

public void set_shutDown()
Beendet den Thread dieser Instanz


initialize_SenderThread

private void initialize_SenderThread(IntpAllgemein ntpAllgemein,
                                     DCFdav dcfDAV,
                                     long zyklusZeit,
                                     long zyklusCountMax)
lokale Hilfsroutine fuer die Konstruktoren


run

public void run()
In einem Endlosloop wird zyklisch der Status des NTP (Zeitservers) eingelesen Bei Datenaenderungen wird der geaenderte Status im DAV protokolliert.

Specified by:
run in interface java.lang.Runnable
Overrides:
run in class java.lang.Thread

leseNTPStatus

public boolean leseNTPStatus()
Liest den aktuellen NTP Zustand return true Zustand seit dem letzten lesen geaendert, false sonst


sendeNTPStatus

private void sendeNTPStatus()

leseUndSendeNTPStatus

private void leseUndSendeNTPStatus()

leseUndSendeNTPStatusOld

private void leseUndSendeNTPStatusOld()
Liest den aktuellen NTP Zustand Bei Aenderungen wird er ueber den DAV protokolliert.


setTrigger

public void setTrigger()
Implementation der Schnittstelle IntpTrigger Methode zum Unterbrechen der wait-Zyklen im Sender Thread.

Specified by:
setTrigger in interface IntpTrigger

mywait

private void mywait(long timeout)
Wrapper Funktion fuer wait() bei timeout = -1000 wird ewig gewartet beim ersten Aufruf nach Obejtkinstanziierung wird nicht gewartet

Parameters:
timeout - Wartezeit in ms

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)

main

public static void main(java.lang.String[] args)
Testroutine fuer das lokale Modul. Wird fuer verschiedene Tests im Laufe des Entwicklungs- und Wartungsprozesses verwendet

Parameters:
args - Testargumente