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 classEmpfaengerklasse für Archivdatenfinal classEmpfaengerklasse für Archiveinstellungenfinal classKlasse, die Quittungen sendetclassAbstrakte Klasse, die zum Empfang bestimmter Daten (z.B. von Archiv-Queries) verwendet werden kann.final classEmpfaengerklasse für Archivanfragen -
Constructor Summary
ConstructorsConstructorDescriptionInQueuesMgr(ArchiveManager aMgr, RuntimeControl runtimeControl, DataIdentTree dTree, QueueParameters parameters) Erzeugt den Warteschlangen-Manager. -
Method Summary
Modifier and TypeMethodDescriptionvoidarchiveRequestedData(long archiveTime, de.bsvrz.dav.daf.main.archive.ArchiveData ad) Fuegt einen nachgeforderten Datensatz in die entsprechende Queue ein.intZählt die Datensätze in der EingangsqueuelongSchätzt den Speicherverbrauch der Archivqueue abDie KlasseArchivConfigmeldet die zu archivierenden Daten mit dem Objekt als Empfaenger an, das von dieser Methode geliefert wird.intLiefert den Task, der für die Bearbeitung der Archiveinstellungen verantwortlich ist.longDie KlasseArchivConfigmeldet die Quittungen für die zu archivierenden Daten mit dem Objekt als Sender an, das von dieser Methode geliefert wird.longlonglongintintintvoidIn dieser Methode wird allen Tasks (falls notwendig) die Möglichkeit gegeben, benoetigte Objekte vom DAV zu laden.longlongdoublelonglongGibt die Laufzeitsteuerung zurück, die u.a. die Archivzeiten ermittelt und Test-Verhalten ermöglicht.longlonglongvoidFügt in die Archivqueue einCloseContainerObjectein, das signalisiert, dass der offene Container aufgrund einer Parameterierungsänderung abgeschlossen werden soll.voidinsertInRequestQueue(de.bsvrz.dav.daf.main.ResultData resultData) Fügt dem Nachfordern-Task einen Auftrag hinzu.voidinsertInSimVarDeleteQueue(de.bsvrz.dav.daf.main.ResultData resultData) Fügt dem Simulationsvarianten-Lösch-Task einen Auftrag hinzu.voidFü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.voidinsertSimVarParam(SimulationResultData resultData) Fügt dem Parametrierungs-Task einen weiteren Auftrag hinzu.voidSetzt alle Zähler auf 0.voidsetFastExit(boolean quickExit) Setzt, ob sich der InQueuesMgr schnell terminieren soll.voidsetQueryTaskNumbers(int numHi, int numMid, int numLo) Setzt die Anzahl der Threads für Archivanfragen auf die angegebenen Werte.voidStartet alle Tasks (Multi- und Single-Tasks) sowie die Archiv-Tasks.voidFügt dem Lösch-Task (endgültiges Löschen) einen Auftrag hinzu.voidBeendet alle Tasks (Multi- und Single-Tasks) sowie die Archiv-Tasks.booleansubscribe(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)voidIn dieser Methode wird allen Tasks (falls notwendig) die Möglichkeit gegeben, sich auf Objekte anzumelden.voidIn dieser Methode wird allen Tasks (falls notwendig) die Möglichkeit gegeben, sich auf Objekte anzumelden.voidHält alle lesenden Tasks direkt an, ohne weitere Bedingungen zu prüfen.voidsuspendTaskIfNecessary(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 einCloseContainerObjectein, 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 derArchiveManagerbeim Start einenArchiveSettingsTask.ArSSettingListenereinhä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 KlasseArchivConfigmeldet 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 KlasseArchivConfigmeldet 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
-