Class ThreadElement
- java.lang.Object
-
- java.lang.Thread
-
- de.bsvrz.pua.prot.manager.taskmanager.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
-
Constructor Summary
Constructors Constructor Description ThreadElement(ThreadPool creator, DataManagerInterface dataManager, long maxDelay, int timeout)
Initialisierung des Objekts
-
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ücklong
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 Auftragsint
getTimeout()
boolean
isRunning()
Zeigt an, ob der Thread bereits läuft, d.h. ob er sich bereits in dierun
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
-
-
-
-
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 SkriptsmaxDelay
- 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()
-
getCreator
public ThreadPool getCreator()
-
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 dierun
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 MethodeThreadPool.finished(ThreadElement)
auf. Wird das Protokoll gespeichert auf dem Datenträger gespeichert, wird es wieder gelöscht. Im Gegensatz zukill()
steht der Thread danach weiterhin zur Verfügung.
-
stopProtocolTransmission
public void stopProtocolTransmission()
-
getPuaSender
protected PuaSender getPuaSender(AbstractTask task)
-
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 interfacejava.lang.Runnable
- Overrides:
run
in classjava.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
-
-