Class ThreadPool


  • public class ThreadPool
    extends java.lang.Object
    Verwaltet eine feste Anzahl von ThreadElement Objekten. Diese Threads werden über die Protokoll-Id identifiziert. ThreadPool führt eine Liste mi ThreadGroup 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 ab
      int 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ück
      ThreadElement getThread​(long jobId)
      Liefert den aktiven Thread mit der gegebenen Auftrags-Id zurück.
      java.util.ArrayList<ThreadElement> getThreads()
      Gibt alle aktiven Threads zurück
      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.
      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.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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 - DaV
        maxProtocols - Anzahl der Threads die gleichzeitig laufen dürfen
        dataManager - 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 wird
        configAuth - 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 mit isTerminated() ü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 - Auftragsparameter
        client - Auftraggeber, an den das Ergebnis gesendet wird.
        protocolId - Protokoll-Id
        initialFlowControl - 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.