Class ThreadPool
- java.lang.Object
-
- de.bsvrz.pua.prot.manager.taskmanager.ThreadPool
-
public class ThreadPool extends java.lang.Object
Verwaltet eine feste Anzahl vonThreadElement
Objekten. Diese Threads werden über die Protokoll-Id identifiziert. ThreadPool führt eine Liste miThreadGroup
kann nicht verwendet werden, da die Anzahl der Threads nicht eingestellt werden kann. Außerdem führt ThreadPool eine Liste mit ausstehenden Aufträgen, die auf einen frei werdenen Thread verteilt werden.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ThreadPool.QueuedThread
Speichert einen Auftrag in der Warteschlange für externe Zwecke
-
Constructor Summary
Constructors Constructor Description ThreadPool(de.bsvrz.dav.daf.main.ClientDavInterface dav, int maxProtocols, DataManagerInterface dataManager, int maxQueries, long maxDelay, int timeout, de.bsvrz.dav.daf.main.config.ConfigurationObject configAuth)
Erzeugt den ThreadPool.
-
Method Summary
Modifier and Type Method Description ThreadPool.QueuedThread
abortQueuedTask(long jobId)
Bricht einen Auftrag in Warteschlange abint
alive()
boolean
busy()
Zeigt an ob weitere Anfragen angenommen werden können.java.lang.Long[]
getActiveProtocols()
Liste mit den Protokollen die gerade gesendet / erstellt werden.de.bsvrz.dav.daf.main.config.ConfigurationObject
getConfigAuth()
java.util.ArrayList<JobInProgress>
getJobList()
Gibt eine Liste mit allen aktuell wartenden und in Bearbeitung befindlichen Aufträgen zurückThreadElement
getThread(long jobId)
Liefert den aktiven Thread mit der gegebenen Auftrags-Id zurück.java.util.ArrayList<ThreadElement>
getThreads()
Gibt alle aktiven Threads zurückjava.util.List<ThreadPool.QueuedThread>
getWaitingProtocols()
Liste mit den Objekten, die momentan in der Warteschlange liegen.Falls keine werte vorliegen, wird ein Feld der Länge 0 zurückgegeben.boolean
isTerminated()
Zeigt an ob alle Threads beendet wurden.void
killAll()
Bricht alle Aufträge ab und beendet alle Threads.boolean
storeCreateQuery(long requestId, ProcessingParameter pp, de.bsvrz.dav.daf.main.config.SystemObject client, long protocolId, long initialFlowControl)
Legt einen Auftrag zur Protokollerstellung in der Warteschlange ab.boolean
storeGetProtocolQuery(long requestId, de.bsvrz.dav.daf.main.config.SystemObject client, long protocolId, long initialFlowControl)
Legt einen Auftrag zum ausgeben eines gespeicherten Protokolls in der Warteschlange ab.boolean
storeGetUnreadProtocolQuery(long requestId, de.bsvrz.dav.daf.main.config.SystemObject client, long protocolId, long initialFlowControl)
Legt einen Auftrag zum ausgeben eines noch nicht abgelegten Protokolls in der Warteschlange ab.
-
-
-
Constructor Detail
-
ThreadPool
public ThreadPool(de.bsvrz.dav.daf.main.ClientDavInterface dav, int maxProtocols, DataManagerInterface dataManager, int maxQueries, long maxDelay, int timeout, de.bsvrz.dav.daf.main.config.ConfigurationObject configAuth) throws de.bsvrz.sys.funclib.losb.exceptions.FailureException
Erzeugt den ThreadPool. Es werden sofort alle Threads erzeugt. Es wird solange gewartet, bis alle Threads gestartet wurden.- Parameters:
dav
- DaVmaxProtocols
- Anzahl der Threads die gleichzeitig laufen dürfendataManager
- Datenmanager. Ermöglicht das Interpretieren des Skripts.maxQueries
- Maximale Größe der Warteschlange für Anufträge zur Protokollerstellung.maxDelay
- Maximale Zeitdauer in ms, für die die Protokollerstellung angehalten werden kann.timeout
- Anzahl Minuten ohne Antwort vom Client, nach der die Übertragung getrennt wirdconfigAuth
- Konfigurationsverantwortlicher für Anfragen an das Archivsystem.- Throws:
de.bsvrz.sys.funclib.losb.exceptions.FailureException
- Keine Verbindung zum Datenverteiler; Erzeugen aller Threads scheitert.
-
-
Method Detail
-
busy
public boolean busy()
Zeigt an ob weitere Anfragen angenommen werden können. Dazu wird überprüft, ob die Warteschlange für eingehende Anfragen gefüllt ist und die Threads alle beschäftigt sind.- Returns:
true
falls die Warteschlange bereits voll ist.false
sonst.
-
killAll
public void killAll()
Bricht alle Aufträge ab und beendet alle Threads. Anschließend kann mitisTerminated()
überprüft werden, ob die Threads beendet wurden.
-
alive
public int alive()
- Returns:
- Anzahl der aktiven und inaktiven Threads.
-
getConfigAuth
public de.bsvrz.dav.daf.main.config.ConfigurationObject getConfigAuth()
- Returns:
- Returns the cofigAuth.
-
storeCreateQuery
public boolean storeCreateQuery(long requestId, ProcessingParameter pp, de.bsvrz.dav.daf.main.config.SystemObject client, long protocolId, long initialFlowControl) throws de.bsvrz.sys.funclib.losb.exceptions.FailureException
Legt einen Auftrag zur Protokollerstellung in der Warteschlange ab.- Parameters:
requestId
- Anfrage-Id. Id, die die anfragende Applikation vergeben hat.pp
- Auftragsparameterclient
- Auftraggeber, an den das Ergebnis gesendet wird.protocolId
- Protokoll-IdinitialFlowControl
- InitialFlowControl- Returns:
true
falls der Auftrag angenommen wurde.- Throws:
de.bsvrz.sys.funclib.losb.exceptions.FailureException
- Fehler beim Senden.
-
storeGetProtocolQuery
public boolean storeGetProtocolQuery(long requestId, de.bsvrz.dav.daf.main.config.SystemObject client, long protocolId, long initialFlowControl) throws de.bsvrz.sys.funclib.losb.exceptions.FailureException
Legt einen Auftrag zum ausgeben eines gespeicherten Protokolls in der Warteschlange ab.- Parameters:
requestId
- Anfrage-Id. Id, die die anfragende Applikation vergeben hat.client
- Auftraggeber, an den das Ergebnis gesendet wird.protocolId
- Protokoll-Id des Protokolls, das abgerufen werden soll.initialFlowControl
- InitialFlowControl- Returns:
true
falls der Auftrag angenommen wurde.- Throws:
de.bsvrz.sys.funclib.losb.exceptions.FailureException
- Fehler beim Senden.
-
storeGetUnreadProtocolQuery
public boolean storeGetUnreadProtocolQuery(long requestId, de.bsvrz.dav.daf.main.config.SystemObject client, long protocolId, long initialFlowControl) throws de.bsvrz.sys.funclib.losb.exceptions.FailureException
Legt einen Auftrag zum ausgeben eines noch nicht abgelegten Protokolls in der Warteschlange ab.- Parameters:
requestId
- Anfrage-Id. Id, die die anfragende Applikation vergeben hat.client
- Auftraggeber, an den das Ergebnis gesendet wird.protocolId
- Protokoll-Id des Protokolls, das abgerufen werden soll.initialFlowControl
- InitialFlowControl- Returns:
true
falls der Auftrag angenommen wurde.- Throws:
de.bsvrz.sys.funclib.losb.exceptions.FailureException
- Fehler beim Senden.
-
abortQueuedTask
public ThreadPool.QueuedThread abortQueuedTask(long jobId)
Bricht einen Auftrag in Warteschlange ab- Parameters:
jobId
- Auftrags-Id des gesuchten Threads- Returns:
- der abgebrochene Task falls vorhanden
-
getJobList
public java.util.ArrayList<JobInProgress> getJobList() throws de.bsvrz.sys.funclib.losb.exceptions.FailureException
Gibt eine Liste mit allen aktuell wartenden und in Bearbeitung befindlichen Aufträgen zurück- Returns:
- Liste mit Autrags-Objekten
- Throws:
de.bsvrz.sys.funclib.losb.exceptions.FailureException
- Exception
-
getActiveProtocols
public java.lang.Long[] getActiveProtocols()
Liste mit den Protokollen die gerade gesendet / erstellt werden.- Returns:
- Liste mit Protokollen. Falls keine Protokolle erstellt werden, wird ein Feld der Länge 0 zurückgegeben.
-
getWaitingProtocols
public java.util.List<ThreadPool.QueuedThread> getWaitingProtocols()
Liste mit den Objekten, die momentan in der Warteschlange liegen.Falls keine werte vorliegen, wird ein Feld der Länge 0 zurückgegeben.- Returns:
- Liste QueuedThread-Objekten
-
getThread
public ThreadElement getThread(long jobId)
Liefert den aktiven Thread mit der gegebenen Auftrags-Id zurück.- Parameters:
jobId
- Auftrags-Id des gesuchten Threads- Returns:
- Thread mit der gegebenen Auftrags-Id oder null, falls es keinen Thread mit der gegebenen Auftrags-Id gibt.
-
getThreads
public java.util.ArrayList<ThreadElement> getThreads()
Gibt alle aktiven Threads zurück- Returns:
- alle aktiven Threads
-
isTerminated
public boolean isTerminated()
Zeigt an ob alle Threads beendet wurden.- Returns:
true
falls alle Threads beendet wurden.
-
-