Package de.bsvrz.ars.ars.mgmt
Class InQueuesMgr
java.lang.Object
de.bsvrz.ars.ars.mgmt.InQueuesMgr
Warteschlangen-Manager. Verteilt reinkommende Datentelegramm mit Datensätzen/Archivanfragen/Archiv-Informationsanfragen/
Backup-/Restore-/HeaderRestore-/LZV/Delete-/RequestGap-Aufträgen auf die jeweilige Warteschlange.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionfinal class
Empfaengerklasse für Archivdatenfinal class
Empfaengerklasse für Archiveinstellungenfinal class
Klasse, die Quittungen sendetclass
Abstrakte Klasse, die zum Empfang bestimmter Daten (z.B. von Archiv-Queries) verwendet werden kann.final class
Empfaengerklasse für Archivanfragen -
Constructor Summary
ConstructorsConstructorDescriptionInQueuesMgr
(ArchiveManager aMgr, RuntimeControl runtimeControl, DataIdentTree dTree, QueueParameters parameters) Erzeugt den Warteschlangen-Manager. -
Method Summary
Modifier and TypeMethodDescriptionvoid
archiveRequestedData
(long archiveTime, de.bsvrz.dav.daf.main.archive.ArchiveData ad) Fuegt einen nachgeforderten Datensatz in die entsprechende Queue ein.int
Zählt die Datensätze in der Eingangsqueuelong
Schätzt den Speicherverbrauch der Archivqueue abDie KlasseArchivConfig
meldet die zu archivierenden Daten mit dem Objekt als Empfaenger an, das von dieser Methode geliefert wird.int
Liefert den Task, der für die Bearbeitung der Archiveinstellungen verantwortlich ist.long
Die KlasseArchivConfig
meldet die Quittungen für die zu archivierenden Daten mit dem Objekt als Sender an, das von dieser Methode geliefert wird.long
long
long
int
int
int
void
In dieser Methode wird allen Tasks (falls notwendig) die Möglichkeit gegeben, benoetigte Objekte vom DAV zu laden.long
long
double
long
long
Gibt die Laufzeitsteuerung zurück, die u.a. die Archivzeiten ermittelt und Test-Verhalten ermöglicht.long
long
long
void
Fügt in die Archivqueue einCloseContainerObject
ein, das signalisiert, dass der offene Container aufgrund einer Parameterierungsänderung abgeschlossen werden soll.void
insertInRequestQueue
(de.bsvrz.dav.daf.main.ResultData resultData) Fügt dem Nachfordern-Task einen Auftrag hinzu.void
insertInSimVarDeleteQueue
(de.bsvrz.dav.daf.main.ResultData resultData) Fügt dem Simulationsvarianten-Lösch-Task einen Auftrag hinzu.void
Fügt in die Archivqueue einen Benachrichtigungstoken ein, der bei seiner "Archivierung" signalisiert, dass alle (zuvor in die Queue eingefügten) nachgeforderten Datensätze archiviert wurden.void
insertSimVarParam
(SimulationResultData resultData) Fügt dem Parametrierungs-Task einen weiteren Auftrag hinzu.void
Setzt alle Zähler auf 0.void
setFastExit
(boolean quickExit) Setzt, ob sich der InQueuesMgr schnell terminieren soll.void
setQueryTaskNumbers
(int numHi, int numMid, int numLo) Setzt die Anzahl der Threads für Archivanfragen auf die angegebenen Werte.void
Startet alle Tasks (Multi- und Single-Tasks) sowie die Archiv-Tasks.void
Fügt dem Lösch-Task (endgültiges Löschen) einen Auftrag hinzu.void
Beendet alle Tasks (Multi- und Single-Tasks) sowie die Archiv-Tasks.boolean
subscribe
(de.bsvrz.dav.daf.main.ClientDavInterface davCon, de.bsvrz.dav.daf.main.config.SystemObject so, de.bsvrz.dav.daf.main.DataDescription dataDescription) Anmelden mit Verzögerung (Sliding-Window-Mechanismus)void
In dieser Methode wird allen Tasks (falls notwendig) die Möglichkeit gegeben, sich auf Objekte anzumelden.void
In dieser Methode wird allen Tasks (falls notwendig) die Möglichkeit gegeben, sich auf Objekte anzumelden.void
Hält alle lesenden Tasks direkt an, ohne weitere Bedingungen zu prüfen.void
suspendTaskIfNecessary
(Task task) Prüft ob Tasks temporaer blockiert werden sollen und blockiert ggf. den aufrufenden Task.
-
Constructor Details
-
InQueuesMgr
public InQueuesMgr(ArchiveManager aMgr, RuntimeControl runtimeControl, DataIdentTree dTree, QueueParameters parameters) Erzeugt den Warteschlangen-Manager.- Parameters:
aMgr
- Archiv-ManagerruntimeControl
- Laufzeitumgebung um z.B. die Systemzeit abzufragen oder Spezialcode für Tests zu aktivierendTree
- DataIdentTreeparameters
- Queue-Einstellungen
-
-
Method Details
-
subscribe
public boolean subscribe(de.bsvrz.dav.daf.main.ClientDavInterface davCon, de.bsvrz.dav.daf.main.config.SystemObject so, de.bsvrz.dav.daf.main.DataDescription dataDescription) throws InterruptedException Anmelden mit Verzögerung (Sliding-Window-Mechanismus)- Parameters:
davCon
- Datenverteilerverbindungso
- ObjektdataDescription
- DataDescription- Returns:
- true wenn die Anmeldung durchgeführt werden konnte, sonst false (z.B. bei Anmeldung eines Empfängers auf Senke-Aspekt)
- Throws:
InterruptedException
- Beim Warten unterbrochen
-
setQueryTaskNumbers
public void setQueryTaskNumbers(int numHi, int numMid, int numLo) Setzt die Anzahl der Threads für Archivanfragen auf die angegebenen Werte. Falls Threads entfernt werden, werden noch behandelte Anfragen zuende bearbeitet.- Parameters:
numHi
- Anzahl Tasks der Prioritaet "hoch"numMid
- Anzahl Tasks der Prioritaet "mittel"numLo
- Anzahl Tasks der Prioritaet "niedrig"
-
getHiQueryTaskNum
public int getHiQueryTaskNum() -
getMidQueryTaskNum
public int getMidQueryTaskNum() -
getLoQueryTaskNum
public int getLoQueryTaskNum() -
suspendTaskIfNecessary
Prüft ob Tasks temporaer blockiert werden sollen und blockiert ggf. den aufrufenden Task.Diese Methode und
suspendNonWriteTasks()
verwenden eine reduzierte Synchronisierung, um die Zahl der durchlaufenen synchronized-Bloecke gering zu halten.Diese Methode darf nur ausgeführt werden, wenn der task nicht auf eine Datenidentifikation synchronisiert ist (Deadlock-Gefahr)
- Parameters:
task
- Anzuhaltender Task- Throws:
InterruptedException
- Thread unterbrochen
-
suspendNonWriteTasksDirect
public void suspendNonWriteTasksDirect()Hält alle lesenden Tasks direkt an, ohne weitere Bedingungen zu prüfen. -
getObjectsFromDav
public void getObjectsFromDav()In dieser Methode wird allen Tasks (falls notwendig) die Möglichkeit gegeben, benoetigte Objekte vom DAV zu laden. -
subscribeSettings
public void subscribeSettings()In dieser Methode wird allen Tasks (falls notwendig) die Möglichkeit gegeben, sich auf Objekte anzumelden. Abmelden geschieht zentral über denConnectionManager
. -
subscribeQueries
public void subscribeQueries()In dieser Methode wird allen Tasks (falls notwendig) die Möglichkeit gegeben, sich auf Objekte anzumelden. Abmelden geschieht zentral über denConnectionManager
. -
startAllTasks
public void startAllTasks()Startet alle Tasks (Multi- und Single-Tasks) sowie die Archiv-Tasks. -
stopAllTasks
Beendet alle Tasks (Multi- und Single-Tasks) sowie die Archiv-Tasks.- Throws:
InterruptedException
- Thread unterbrochen
-
archiveRequestedData
public void archiveRequestedData(long archiveTime, de.bsvrz.dav.daf.main.archive.ArchiveData ad) Fuegt einen nachgeforderten Datensatz in die entsprechende Queue ein.- Parameters:
archiveTime
- Archivzeitad
- Datensatz
-
insertInSimVarDeleteQueue
public void insertInSimVarDeleteQueue(de.bsvrz.dav.daf.main.ResultData resultData) Fügt dem Simulationsvarianten-Lösch-Task einen Auftrag hinzu.- Parameters:
resultData
- Auftrag.
-
insertSimVarParam
Fügt dem Parametrierungs-Task einen weiteren Auftrag hinzu.- Parameters:
resultData
- Auftrag. Enthält Informationen, auf welche Datenidentifikationen sich das Archivsystem anmelden soll.
-
startDeletePermanently
public void startDeletePermanently()Fügt dem Lösch-Task (endgültiges Löschen) einen Auftrag hinzu. -
insertInRequestQueue
public void insertInRequestQueue(de.bsvrz.dav.daf.main.ResultData resultData) Fügt dem Nachfordern-Task einen Auftrag hinzu.- Parameters:
resultData
- Auftrag.
-
insertCloseContainer
Fügt in die Archivqueue einCloseContainerObject
ein, das signalisiert, dass der offene Container aufgrund einer Parameterierungsänderung abgeschlossen werden soll.- Parameters:
cco
-CloseContainerObject
-
getArchiveQueueCapacity
public int getArchiveQueueCapacity()- Returns:
- Gesamtkapazität der Archiv-Warteschlange
-
getQueueLoad
public double getQueueLoad()- Returns:
- Auslastungsgrad der Warteschlange. Anhand dieses Wertes wird ermittelt, ob die Bearbeitung nicht schreibender Tasks ausgesetzt wird.
-
countDataInQueues
public int countDataInQueues()Zählt die Datensätze in der Eingangsqueue- Returns:
- Anzahl Datensätze
-
resetDSCounter
public void resetDSCounter()Setzt alle Zähler auf 0. -
getArchiveSettingsTask
Liefert den Task, der für die Bearbeitung der Archiveinstellungen verantwortlich ist. Dies ist notwendig, damit derArchiveManager
beim Start einenArchiveSettingsTask.ArSSettingListener
einhängen und darauf warten kann, dass die Bearbeitung der Archiveinstellungen abgeschlossen ist. Das Archivsystem wartet beim Start auf die Archiv-Einstellungen, da es nicht sinnvoll ist, die ersten Sekunden mit Default-Werten loszulaufen.- Returns:
- Den Task, der für die Bearbeitung der Archiveinstellungen verantwortlich ist.
-
getArchiveDataReceiver
Die KlasseArchivConfig
meldet die zu archivierenden Daten mit dem Objekt als Empfaenger an, das von dieser Methode geliefert wird.- Returns:
- Empfaengerobjekt für zu archivierende Daten.
-
getDataAckSender
Die KlasseArchivConfig
meldet die Quittungen für die zu archivierenden Daten mit dem Objekt als Sender an, das von dieser Methode geliefert wird.- Returns:
- Senderobjekt für die Quittungen der zu archivierenden Daten.
-
setFastExit
public void setFastExit(boolean quickExit) Setzt, ob sich der InQueuesMgr schnell terminieren soll. Bei einer schnellen Terminierung wird nicht auf die Abarbeitugn aller Queues gewartet.- Parameters:
quickExit
- true wenn schnell terminiert werden soll, sonst false
-
getDeletePermanentlyTask
-
getArchiveTask
-
insertRequestedDataFinishedNotification
public void insertRequestedDataFinishedNotification()Fügt in die Archivqueue einen Benachrichtigungstoken ein, der bei seiner "Archivierung" signalisiert, dass alle (zuvor in die Queue eingefügten) nachgeforderten Datensätze archiviert wurden. -
estimateQueueMemoryUsage
public long estimateQueueMemoryUsage()Schätzt den Speicherverbrauch der Archivqueue ab- Returns:
- Archivqueue
-
getBackgroundTaskManager
-
getReceivedCountOnline
public long getReceivedCountOnline()- Returns:
- Zahl aller seit dem Start oder letzten
resetDSCounter()
vongetArchiveDataReceiver()
empfangenen Datensätze, egal ob diese archiviert werden oder nicht. Kann zur Test-Synchronisation verwendet werden.
-
getQueuedCountTotal
public long getQueuedCountTotal()- Returns:
- Zahl aller seit dem Start oder letzten
resetDSCounter()
Datensätze, die in eine Queue eingefügt wurden.
-
getQueuedCountOnline
public long getQueuedCountOnline()- Returns:
- Zahl aller seit dem Start oder letzten
resetDSCounter()
Online-Datensätze, die in eine Queue eingefügt wurden.
-
getQueuesCountRequested
public long getQueuesCountRequested()- Returns:
- Zahl aller seit dem Start oder letzten
resetDSCounter()
nachgeforderten Datensätze, die in eine Queue eingefügt wurden.
-
getFailedCountTotal
public long getFailedCountTotal()- Returns:
- Zahl aller seit dem Start oder letzten
resetDSCounter()
Datensätze, die nicht erfolgreich archiviert wurden
-
getSuccessCountTotal
public long getSuccessCountTotal()- Returns:
- Zahl aller seit dem Start oder letzten
resetDSCounter()
Datensätze, die erfolgreich archiviert wurden
-
getFailedCountOnline
public long getFailedCountOnline()- Returns:
- Zahl aller seit dem Start oder letzten
resetDSCounter()
Online-Datensätze, die nicht erfolgreich archiviert wurden
-
getSuccessCountOnline
public long getSuccessCountOnline()- Returns:
- Zahl aller seit dem Start oder letzten
resetDSCounter()
Online-Datensätze, die erfolgreich archiviert wurden
-
getFailedCountRequested
public long getFailedCountRequested()- Returns:
- Zahl aller seit dem Start oder letzten
resetDSCounter()
nachgeforderten Datensätze, die nicht erfolgreich archiviert wurden
-
getSuccessCountRequested
public long getSuccessCountRequested()- Returns:
- Zahl aller seit dem Start oder letzten
resetDSCounter()
nachgeforderten Datensätze, die erfolgreich archiviert wurden
-
getCloseContainerSuccess
public long getCloseContainerSuccess()- Returns:
- Zahl aller seit dem Start oder letzten
resetDSCounter()
erfolgreich verarbeiteten Close-Container-Datensätze. Kann zur Test-Synchronisation verwendet werden.
-
getRuntimeControl
Gibt die Laufzeitsteuerung zurück, die u.a. die Archivzeiten ermittelt und Test-Verhalten ermöglicht.- Returns:
- RuntimeControl
-