public class ThreadElement
extends java.lang.Thread
Modifier and Type | Class and Description |
---|---|
static class |
ThreadElement.Operation |
Modifier and Type | Field and Description |
---|---|
private boolean |
_abort
True falls der Thread die Datenaufbereitung beenden soll.
|
private boolean |
_busy
true falls ein Auftrag vorliegt und noch abgearbeitet werden muss.
|
private ThreadPool |
_creator
Erzeuger diser ThreadElement Instanz
|
private static Debug |
_debug
Debug-Ausgabe
|
private boolean |
_die
Falls der Thread vollständig beendet werden soll.
|
private boolean |
_hasError |
private long |
_initialFlowControl
Intitale ziel-Datensatznummer der Flusskontrolle
|
private boolean |
_inProgress |
private long |
_jobId
Auftrags_ID
|
private long |
_maxDelay
Maximale Zeitdauer in ms, für die die Protokollerstellung angehalten werden kann.
|
private ThreadElement.Operation |
_operation
1: Protokollerstellung. 2: Gespeichertes Protokoll senden. 3: Noch nicht abgerufenes Protokoll senden.
|
private ProcessingParameter |
_pp
Auftragsparameter
|
private ProcessingInterface |
_processor
Objekt das die Datenaufbereitung durchführt
|
private long |
_protocolId
Protokoll-Id
|
private long |
_requestId
Id der initialen Anfrage zur Protokollerstellung.
|
private PuaSender |
_sender
Objekt zum Senden der Daten
|
private SerializerUtil |
_serializer
Objekt zum serialisieren und zippen der Ergebnisdaten.
|
private long |
_startTime
Zeitpunkt an dem der Auftrag erstellt wurde
|
private int |
_timeout
Anzahl Minuten ohne Antwort vom Client, nach der die Übertragung getrennt wird
|
private DataManagerInterface |
dataManager
Data Manager.
|
static byte |
INVALID_STATUS
Status der Protokollerstellung nicht ermittelbar.
|
boolean |
running
Zeigt an, ob der Thread bereits läuft, d.h. ob er sich bereits in die
run Methode befindet. |
Constructor and Description |
---|
ThreadElement(ThreadPool creator,
DataManagerInterface dataManager,
long maxDelay,
int timeout)
Initialisierung des Objekts
|
Modifier and Type | Method and Description |
---|---|
void |
abort()
Bricht die Protokollerstellung ab.
|
void |
activateCreateProtocol(ClientDavInterface dav,
SystemObject client,
long requestId,
ProcessingParameter pp,
long protocolId,
long jobId,
long startTime,
long initialFlowControl)
Startet die Protokollerstellung.
|
void |
activateGetProtocol(ClientDavInterface dav,
SystemObject client,
long requestId,
long protocolId,
long jobId,
long startTime,
long initialFlowControl)
Startet das Senden eines bereits gespeicherten Protokolls.
|
void |
activateGetUnreadProtocol(ClientDavInterface dav,
SystemObject client,
long requestId,
long protocolId,
long jobId,
long startTime,
long initialFlowControl)
Startet das Senden eines noch nicht abgerufenen Protokolls.
|
protected ProcessingInformation |
evaluateScript()
Evaluiert das Skript.
|
void |
flowControl(long numData) |
long |
getJobId()
Gibt die eindeutige ID dieses Auftrags zurück.
|
ThreadElement.Operation |
getOperation()
Gibt die aktuell durchgeführte Aktion zurück
|
long |
getProtocolId()
Liefert die Protokoll-Id.
|
private PuaSender |
getPuaSender(ClientDavInterface dav,
SystemObject client) |
long |
getRequestId() |
byte |
getStatus()
Liefert den Status des Auftrags
|
void |
kill()
Bricht den Auftrag ab und beendet den Thread vollständig.
|
void |
pauseProcessing()
Flußsteuerung: Versand des Protokolls anhalten.
|
private void |
processData(ProcessingInformation pi)
Führt die Datenaufbereitung durch.
|
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.
|
private void |
sendError(FailureException exception)
Sendet eine Fehlermeldung an den Auftraggeber und gibt eine Debug-Nachricht aus.
|
private void |
sendProtocol()
Überträgt ein Protokoll an den Auftraggeber.
|
void |
stopProtocolTransmission() |
JobInProgress |
toJobInProgress()
Erstellt ein JobInProgress-Objekt zur Übertragung des Auftragsstatus an den Client
|
activeCount, checkAccess, clone, 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
public static final byte INVALID_STATUS
private ThreadElement.Operation _operation
private ProcessingParameter _pp
private long _initialFlowControl
private ProcessingInterface _processor
private ThreadPool _creator
private boolean _abort
private volatile boolean _die
private static final Debug _debug
public boolean running
run
Methode befindet.private final DataManagerInterface dataManager
private long _protocolId
private long _jobId
private long _requestId
private PuaSender _sender
private final long _maxDelay
private final int _timeout
private boolean _busy
private boolean _inProgress
private boolean _hasError
private long _startTime
private SerializerUtil _serializer
public ThreadElement(ThreadPool creator, DataManagerInterface dataManager, long maxDelay, int timeout) throws FailureException
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
- FailureException
- Fehler bei der Initialisierung.public byte getStatus()
INVALID_STATUS
falls kein Auftrag anliegt.protected ProcessingInformation evaluateScript() throws FailureException
DataManagerInterface
) der Skriptinterpreter (Interpreter
) verwendet.FailureException
- Fehler im Skript.public void abort()
_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.public void stopProtocolTransmission()
public void run()
run
in interface java.lang.Runnable
run
in class java.lang.Thread
private void sendProtocol()
FailureException
private void sendError(FailureException exception)
exception
- Fehlermeldung.private void processData(ProcessingInformation pi) throws FailureException
FailureException
- Metainformation des Skripts ist korrupt.public void activateCreateProtocol(ClientDavInterface dav, SystemObject client, long requestId, ProcessingParameter pp, long protocolId, long jobId, long startTime, long initialFlowControl) throws FailureException
dav
- Verbindung zum Datenverteilerclient
- AuftraggeberrequestId
- Anfrage-IDpp
- Auftragsparameter.protocolId
- Protokoll-IdjobId
- startTime
- initialFlowControl
- FailureException
- Fehler bei der Sendeanmeldung.public void activateGetProtocol(ClientDavInterface dav, SystemObject client, long requestId, long protocolId, long jobId, long startTime, long initialFlowControl) throws FailureException
dav
- Verbindung zum Datenverteiler.client
- Auftraggeber.requestId
- Anfrage-IDprotocolId
- Id des Protokolls, das gesendet werden soll.jobId
- startTime
- initialFlowControl
- FailureException
- Fehler bei der Sendeanmeldung.public void activateGetUnreadProtocol(ClientDavInterface dav, SystemObject client, long requestId, long protocolId, long jobId, long startTime, long initialFlowControl) throws FailureException
dav
- Verbindung zum Datenverteiler.client
- Auftraggeber.requestId
- Anfrage-IDprotocolId
- Id des Protokolls, das gesendet werden soll.jobId
- startTime
- initialFlowControl
- FailureException
- Fehler bei der Sendeanmeldung.private PuaSender getPuaSender(ClientDavInterface dav, SystemObject client)
public void kill()
public long getProtocolId()
public long getJobId()
public void pauseProcessing()
public void resumeProcessing()
public void flowControl(long numData)
public long getRequestId()
public ThreadElement.Operation getOperation()
public JobInProgress toJobInProgress() throws FailureException
FailureException