Class ThreadElement

  • All Implemented Interfaces:
    java.lang.Runnable

    public class ThreadElement
    extends java.lang.Thread
    Thread der einen Auftrag der in den Bereich der Protokollerstellung fällt ausführt. Mögliche Aufträge sind:
    - Protokoll erstellen
    - Protokoll abbrechen
    - Status der Protokollerstellung anfordern
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  ThreadElement.Operation  
      • Nested classes/interfaces inherited from class java.lang.Thread

        java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
    • Field Summary

      • Fields inherited from class java.lang.Thread

        MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
    • Method Summary

      Modifier and Type Method Description
      void abort()
      Bricht die Protokollerstellung ab.
      void activateTask​(AbstractTask task)  
      void flowControl​(long numData)  
      ThreadPool getCreator()  
      long getJobId()
      Gibt die eindeutige ID dieses Auftrags zurück.
      long getMaxDelay()  
      ThreadElement.Operation getOperation()
      Gibt die aktuell durchgeführte Aktion zurück
      long getProtocolId()
      Liefert die Protokoll-Id.
      protected PuaSender getPuaSender​(AbstractTask task)  
      long getRequestId()  
      de.bsvrz.sys.funclib.losb.datk.SerializerUtil getSerializer()  
      byte getStatus()
      Liefert den Status des Auftrags
      int getTimeout()  
      boolean isRunning()
      Zeigt an, ob der Thread bereits läuft, d.h. ob er sich bereits in die run Methode befindet.
      void kill()
      Bricht den Auftrag ab und beendet den Thread vollständig.
      void pauseProcessing()
      Flußsteuerung: Versand des Protokolls anhalten.
      void resumeProcessing()
      Flußsteuerung: Versand des Protokolls fortsetzen.
      void run()
      Startet den Thread und versetzt ihn sofort in einen Schlafzustand, aus dem er erst wieder geweckt wird, wenn eine Anfrage eingeht.
      void sendError​(de.bsvrz.sys.funclib.losb.exceptions.FailureException exception)
      Sendet eine Fehlermeldung an den Auftraggeber und gibt eine Debug-Nachricht aus.
      void setRunning​(boolean running)  
      void stopProtocolTransmission()  
      JobInProgress toJobInProgress()
      Erstellt ein JobInProgress-Objekt zur Übertragung des Auftragsstatus an den Client
      • Methods inherited from class java.lang.Thread

        activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, toString, yield
      • Methods inherited from class java.lang.Object

        equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • ThreadElement

        public ThreadElement​(ThreadPool creator,
                             DataManagerInterface dataManager,
                             long maxDelay,
                             int timeout)
                      throws de.bsvrz.sys.funclib.losb.exceptions.FailureException
        Initialisierung des Objekts
        Parameters:
        creator - Erzeuger des Threads. Wird benachrichtigt (@link ThreadPool#finished(ThreadElement)}), sobald Thread unbeschäftigt ist.
        dataManager - Data Manager. Ermöglicht das Interpretieren des Skripts
        maxDelay - Maximale Zeitdauer in ms, für die die Protokollerstellung angehalten werden kann.
        timeout - Timeout
        Throws:
        de.bsvrz.sys.funclib.losb.exceptions.FailureException - Fehler bei der Initialisierung.
    • Method Detail

      • getSerializer

        public de.bsvrz.sys.funclib.losb.datk.SerializerUtil getSerializer()
      • getMaxDelay

        public long getMaxDelay()
      • getTimeout

        public int getTimeout()
      • isRunning

        public boolean isRunning()
        Zeigt an, ob der Thread bereits läuft, d.h. ob er sich bereits in die run Methode befindet.
        Returns:
        Thread läuft?
      • setRunning

        public void setRunning​(boolean running)
      • getStatus

        public byte getStatus()
        Liefert den Status des Auftrags
        Returns:
        Prozentualer Fertigstellungsgrad des Auftrags oder INVALID_STATUS falls kein Auftrag anliegt.
      • abort

        public void abort()
        Bricht die Protokollerstellung ab. Der Thread meldet dem _creator, dass er wieder für neue Anfragen zur Verfügung steht. Dazu ruft er die Methode ThreadPool.finished(ThreadElement) auf. Wird das Protokoll gespeichert auf dem Datenträger gespeichert, wird es wieder gelöscht. Im Gegensatz zu kill() steht der Thread danach weiterhin zur Verfügung.
      • stopProtocolTransmission

        public void stopProtocolTransmission()
      • run

        public void run()
        Startet den Thread und versetzt ihn sofort in einen Schlafzustand, aus dem er erst wieder geweckt wird, wenn eine Anfrage eingeht.
        Specified by:
        run in interface java.lang.Runnable
        Overrides:
        run in class java.lang.Thread
      • sendError

        public void sendError​(de.bsvrz.sys.funclib.losb.exceptions.FailureException exception)
        Sendet eine Fehlermeldung an den Auftraggeber und gibt eine Debug-Nachricht aus.
        Parameters:
        exception - Fehlermeldung.
      • activateTask

        public void activateTask​(AbstractTask task)
                          throws de.bsvrz.sys.funclib.losb.exceptions.FailureException
        Throws:
        de.bsvrz.sys.funclib.losb.exceptions.FailureException
      • kill

        public void kill()
        Bricht den Auftrag ab und beendet den Thread vollständig.
      • getProtocolId

        public long getProtocolId()
        Liefert die Protokoll-Id.
        Returns:
        Id des Protokolls, das erstellt wird.
      • getJobId

        public long getJobId()
        Gibt die eindeutige ID dieses Auftrags zurück. Diese Id wird statt der Protokoll-ID verwendet, da je Protokoll u.U. mehrere Aufträge gleichzeitig ausgeführt werden können.
        Returns:
        ID des Auftrags.
      • pauseProcessing

        public void pauseProcessing()
        Flußsteuerung: Versand des Protokolls anhalten.
      • resumeProcessing

        public void resumeProcessing()
        Flußsteuerung: Versand des Protokolls fortsetzen.
      • flowControl

        public void flowControl​(long numData)
      • getRequestId

        public long getRequestId()
        Returns:
        Liefert die initiale Anfrage-Id.
      • getOperation

        public ThreadElement.Operation getOperation()
        Gibt die aktuell durchgeführte Aktion zurück
        Returns:
        1: Protokollerstellung. 2: Gespeichertes Protokoll senden. 3: Noch nicht abgerufenes Protokoll senden.
      • toJobInProgress

        public JobInProgress toJobInProgress()
                                      throws de.bsvrz.sys.funclib.losb.exceptions.FailureException
        Erstellt ein JobInProgress-Objekt zur Übertragung des Auftragsstatus an den Client
        Returns:
        JobInprogress
        Throws:
        de.bsvrz.sys.funclib.losb.exceptions.FailureException - Exception