de.bsvrz.ars.ars.mgmt
Class InQueuesMgr

java.lang.Object
  extended by de.bsvrz.ars.ars.mgmt.InQueuesMgr
All Implemented Interfaces:
RingOfDeathListener

public class InQueuesMgr
extends Object
implements RingOfDeathListener

Warteschlangen-Manager. Verteilt reinkommende Datentelegramm mit Datensaetzen/Archivanfragen/Archiv-Informationsanfragen/ Backup-/Restore-/HeaderRestore-/LZV/Delete-/RequestGap-Aufträgen auf die jeweilige Warteschlange.

Author:
beck et al. projects GmbH, Alexander Schmidt

Nested Class Summary
 class InQueuesMgr.ArchiveDataReceiver
          Empfaengerklasse fuer Archivdaten
 class InQueuesMgr.ArchiveSettingsReceiver
          Empfaengerklasse fuer Archiveinstellungen
 class InQueuesMgr.DataAckSender
           
 class InQueuesMgr.DataReceiver
          Abstrakte Klasse, die zum Empfang bestimmter Daten (z.B.
 class InQueuesMgr.QueryReceiver
          Empfaengerklasse fuer Archivanfragen
 
Field Summary
private  LongTermTaskStatePublisher _longTermTaskStatePublisher
           
private  InQueuesMgr.ArchiveDataReceiver archiveDataReceiver
           
private  ArchiveRingBuffer[] archiveQueues
           
private  int[] archiveQueuesLeftout
           
private  ArchiveTask[] archiveTasks
           
private  ArchiveManager archMgr
           
private  InQueuesMgr.ArchiveSettingsReceiver arsSettingsReceiver
           
static int CAPA_Q_ARCH_TSK_REQ
          Kapazitaet des Ringpuffers fuer nachgelieferte Datensaetze
private static int[] CAPA_QUEUES
           
private static int CHUNK_Q_ARCH_TSK_ONLINE
          Blockgroesse eines Ringpuffers fuer aktuelle Datensaetze.
private  InQueuesMgr.DataAckSender dataAckSender
           
private  DataIdentTree didTree
           
private  FlowControlTask flowCtrl
           
private static int ID_ARCH_QUEUES_ONLINE
           
private static int ID_ARCH_QUEUES_REQ
           
private static int ID_NONARCH_QUEUES
           
static int INITIAL_CAPA_Q_ARCH_TSK_ONLINE
          Initiale Maximalgroesse eines Ringpuffers fuer aktuelle Datensaetze.
private  Debug logger
           
static String MSG_PID_QUEUE_FULL
           
private  RingBuffer<ResultData>[] nonArchQueues
           
private static double NONWRITE_RESUME_LIMIT
          Ab dieser Auslastung werden Non-Write-Tasks wieder fortgesetzt (mit Hysterese)
private static double NONWRITE_SUSPEND_LIMIT
          Ab dieser Auslastung werden Non-Write-Tasks angehalten
private  boolean nonWriteTasksSuspended
          Flag ob eine Ueberlastsituation vorliegt und deswegen alle nicht schreibenden Tasks unterbrochen werden muessen
private  Object nonWriteTasksSuspendSema
           
static int NUM_OF_ARCH_QUEUES_ONLINE
          Zahl der Tasks, die aktuelle Datensaetze archivieren (sollte Primzahl sein)
static int NUM_OF_ARCH_QUEUES_REQ
          Zahl der Tasks, die nachgelieferte Datensaetze archivieren
private static int NUM_OF_MULTITASK_MGR
           
static int NUM_OF_NONARCH_QUEUES
           
static int NUM_OF_SINGLETASKS
           
private  AtomicInteger onlineDataInQueues
          Zaehlt die insgesamt in den Warteschlangen enthaltenen Datensaetze
static int Q_ARC_SETT_IDX
           
static int Q_ARCINF_IDX
           
static int Q_BACKUP_IDX
           
static int Q_DELETE_IDX
           
static int Q_HDR_REST_IDX
           
static int Q_LZV_IDX
           
static int Q_QRYA_IDX
          Indexe der Eingangswarteschlangen
static int Q_QRYB_IDX
           
static int Q_QRYC_IDX
           
static int Q_REQ_GAP_IDX
           
static int Q_RESTORE_IDX
           
static int Q_SIMPARAM_IDX
           
private  InQueuesMgr.QueryReceiver queryReceiver
           
private static int SHIFT_QUEUES_INTERVAL
           
private  SingleTask[] singleTsks
           
static int ST_ARC_SETT_IDX
           
static int ST_BACKUP_IDX
           
static int ST_DELETE_IDX
           
static int ST_HDR_REST_IDX
           
static int ST_LZV_IDX
           
static int ST_REQ_GAP_IDX
           
static int ST_RESTORE_IDX
           
private  boolean terminated
           
private  Semaphore terminationSemaphor
           
private static int TM_ARC_INF_NUM
           
private static int TM_ARCINF_IDX
           
private static int TM_QRY_A_NUM_DEFAULT
           
private static int TM_QRY_B_NUM_DEFAULT
           
private static int TM_QRY_C_NUM_DEFAULT
           
private static int TM_QRYA_IDX
           
private static int TM_QRYB_IDX
           
private static int TM_QRYC_IDX
           
private static AtomicLong TOTAL_DS_RECEIVED
           
private  MultiTaskManager[] tskMgrs
           
 
Constructor Summary
InQueuesMgr(ArchiveManager aMgr, DataIdentTree dTree)
          Erzeugt den Warteschlangen-Manager.
 
Method Summary
private  void accountPushResult(boolean pushSuccessful, int tskIdx, String logTitle, ResultData resultData)
           
private static int calcArchivTaskIndex(long objID, long atgID, long aspID, int simVar, int numOfQueues)
           
static int calcOnlineArchivTaskIndex(long objID, long atgID, long aspID, int simVar)
          Verteilung der Datenidentifikationen auf die Online-Archiv-Tasks erfolgt anhand der IDs.
private  int calcOnlineArchivTaskIndex(ResultData rd)
          Verteilung der Datenidentifikationen auf die Archiv-Tasks erfolgt anhand der IDs.
static int calcReqArchivTaskIndex(long objID, long atgID, long aspID, int simVar)
          Verteilung der Datenidentifikationen auf die Nachgefordert-Archiv-Tasks erfolgt anhand der IDs.
 void checkForSuspendNonWriteTask()
          Prueft ob Tasks temporaer blockiert werden sollen und blockiert ggf.
 int countOnlineDataInQueues()
           
 void decrOnlineDataInQueues()
           
private  void enlargeQueue(int queue)
          Vergroessert eine Queue (auf Kosten einer anderen, falls die Gesamtgroesse ueberschritten ist).
 InQueuesMgr.ArchiveDataReceiver getArchiveDataReceiver()
          Die Klasse ArchivConfig meldet die zu archivierenden Daten mit dem Objekt als Empfaenger an, das von dieser Methode geliefert wird.
 float[][] getArchiveQueuesOnlineStatus()
           
 float[][] getArchiveQueuesRequestedStatus()
           
 ArchiveSettingsTask getArchiveSettingsTask()
          Liefert den Task, der fuer die Bearbeitung der Archiveinstellungen verantwortlich ist.
 InQueuesMgr.DataAckSender getDataAckSender()
          Die Klasse ArchivConfig meldet die Quittungen fuer die zu archivierenden Daten mit dem Objekt als Sender an, das von dieser Methode geliefert wird.
 int getHiQueryTaskNum()
           
 int getLoQueryTaskNum()
           
 int getMidQueryTaskNum()
           
 float[][] getNonArchiveQueuesStatus()
           
 void getObjectsFromDav()
          In dieser Methode wird allen Tasks (falls notwendig) die Moeglichkeit gegeben, benoetigte Objekte vom DAV zu laden.
 ArchiveTask getOnlineArchiveTask(long objId, long atgId, long aspId, int simVar)
          Nur fuer Testzwecke: Liefert den gewuenschten ArchiveTask
 double getQueueLoad()
           
private  float[][] getQueueStatus(int whichQueues)
           
 SingleTask getSingleTask(int taskIndex)
          Liefert den gewuenschten SingleTask (um etwa Listener einzuhaengen)
static long getTotalDSReceived()
           
static int getTotalOnlineQueuesCapa()
           
 void insertCloseContainer(long objID, ArchiveTask.CloseContainerObject cco)
          Fuegt einen nachgelieferten Datensatz in die entsprechende Queue ein.
 void insertInArchiveQueueReq(long archiveTime, ArchiveData ad)
          Fuegt einen nachgeforderten Datensatz in die entsprechende Queue ein.
 boolean insertInBackupQueue(ResultData resultData)
          Fügt dem Sicherungs-Task einen Auftrag hinzu.
 boolean insertInDeleteRegularQueue(ResultData resultData)
          Fügt dem Lösch-Task (automatisches Löschen) einen Auftrag hinzu.
 boolean insertInLZVQueue(ResultData resultData)
          Fügt dem LZV-Task einen Auftrag hinzu.
 boolean insertInRequestQueue(ResultData resultData)
          Fügt dem Nachfordern-Task einen Auftrag hinzu.
 boolean insertInSimVarDeleteQueue(ResultData resultData)
          Fügt dem Simulationsvarianten-Lösch-Task einen Auftrag hinzu.
 boolean insertSimVarParam(SimulationResultData resultData)
          Fügt dem Parametrierungs-Task einen weiteren Auftrag hinzu.
private  void installQueryTask(MultiTaskManager mtm, int anz)
           
private  void logCapaExceeded(int maxsize, String qname, ResultData rd)
           
protected  void logCapaNoLongerExceeded(int maxsize, String qname, int leftouts)
           
protected  void logSendMsgCapaExceeded(int maxsize, String qname, ResultData rd)
          Betriebsmeldung absetzen: Warteschlange voll.
private  long managePushTimeout(long nextTimeoutTime, String usageText, int tskIdx)
           
private static void resetDSCounter()
          Setzt alle Zaehler auf 0.
 void ringOfDeath(Task doomedTask)
          Wird von einem Task vor dem Verlassen der Hauptschleife aufgerufen, wenn dem Task dieses Interface im Konstruktor uebergeben wurde..
 void setQueryTaskNumbers(int numHi, int numMid, int numLo)
          Setzt die Anzahl der Threads fuer Archivanfragen auf die angegebenen Werte.
 void startAllTasks()
          Startet alle Tasks (Multi- und Single-Tasks) sowie die Archiv-Tasks.
 void stopAllTasks()
          Beendet alle Tasks (Multi- und Single-Tasks) sowie die Archiv-Tasks.
 void subscribeObjects()
          In dieser Methode wird allen Tasks (falls notwendig) die Moeglichkeit gegeben, sich auf Objekte anzumelden.
private  void suspendNonWriteTasks()
          Setzt das Suspend-Flag oder hebt es auf abhaengig von den beiden Grenzen.
private static int totalArchQueues()
           
private  void waitForEmptyArchiveQueues()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ID_ARCH_QUEUES_ONLINE

private static int ID_ARCH_QUEUES_ONLINE

ID_ARCH_QUEUES_REQ

private static int ID_ARCH_QUEUES_REQ

ID_NONARCH_QUEUES

private static int ID_NONARCH_QUEUES

TM_QRYA_IDX

private static final int TM_QRYA_IDX
See Also:
Constant Field Values

TM_QRYB_IDX

private static final int TM_QRYB_IDX
See Also:
Constant Field Values

TM_QRYC_IDX

private static final int TM_QRYC_IDX
See Also:
Constant Field Values

TM_ARCINF_IDX

private static final int TM_ARCINF_IDX
See Also:
Constant Field Values

TM_QRY_A_NUM_DEFAULT

private static final int TM_QRY_A_NUM_DEFAULT
See Also:
Constant Field Values

TM_QRY_B_NUM_DEFAULT

private static final int TM_QRY_B_NUM_DEFAULT
See Also:
Constant Field Values

TM_QRY_C_NUM_DEFAULT

private static final int TM_QRY_C_NUM_DEFAULT
See Also:
Constant Field Values

TM_ARC_INF_NUM

private static final int TM_ARC_INF_NUM
See Also:
Constant Field Values

NUM_OF_MULTITASK_MGR

private static final int NUM_OF_MULTITASK_MGR
See Also:
Constant Field Values

ST_ARC_SETT_IDX

public static final int ST_ARC_SETT_IDX
See Also:
Constant Field Values

ST_BACKUP_IDX

public static final int ST_BACKUP_IDX
See Also:
Constant Field Values

ST_RESTORE_IDX

public static final int ST_RESTORE_IDX
See Also:
Constant Field Values

ST_HDR_REST_IDX

public static final int ST_HDR_REST_IDX
See Also:
Constant Field Values

ST_LZV_IDX

public static final int ST_LZV_IDX
See Also:
Constant Field Values

ST_DELETE_IDX

public static final int ST_DELETE_IDX
See Also:
Constant Field Values

ST_REQ_GAP_IDX

public static final int ST_REQ_GAP_IDX
See Also:
Constant Field Values

NUM_OF_SINGLETASKS

public static final int NUM_OF_SINGLETASKS
See Also:
Constant Field Values

Q_QRYA_IDX

public static final int Q_QRYA_IDX
Indexe der Eingangswarteschlangen

See Also:
Constant Field Values

Q_QRYB_IDX

public static final int Q_QRYB_IDX
See Also:
Constant Field Values

Q_QRYC_IDX

public static final int Q_QRYC_IDX
See Also:
Constant Field Values

Q_ARCINF_IDX

public static final int Q_ARCINF_IDX
See Also:
Constant Field Values

Q_BACKUP_IDX

public static final int Q_BACKUP_IDX
See Also:
Constant Field Values

Q_RESTORE_IDX

public static final int Q_RESTORE_IDX
See Also:
Constant Field Values

Q_HDR_REST_IDX

public static final int Q_HDR_REST_IDX
See Also:
Constant Field Values

Q_LZV_IDX

public static final int Q_LZV_IDX
See Also:
Constant Field Values

Q_DELETE_IDX

public static final int Q_DELETE_IDX
See Also:
Constant Field Values

Q_REQ_GAP_IDX

public static final int Q_REQ_GAP_IDX
See Also:
Constant Field Values

Q_ARC_SETT_IDX

public static final int Q_ARC_SETT_IDX
See Also:
Constant Field Values

Q_SIMPARAM_IDX

public static final int Q_SIMPARAM_IDX
See Also:
Constant Field Values

NUM_OF_NONARCH_QUEUES

public static final int NUM_OF_NONARCH_QUEUES
See Also:
Constant Field Values

CAPA_QUEUES

private static final int[] CAPA_QUEUES

NUM_OF_ARCH_QUEUES_REQ

public static int NUM_OF_ARCH_QUEUES_REQ
Zahl der Tasks, die nachgelieferte Datensaetze archivieren


NUM_OF_ARCH_QUEUES_ONLINE

public static int NUM_OF_ARCH_QUEUES_ONLINE
Zahl der Tasks, die aktuelle Datensaetze archivieren (sollte Primzahl sein)


INITIAL_CAPA_Q_ARCH_TSK_ONLINE

public static int INITIAL_CAPA_Q_ARCH_TSK_ONLINE
Initiale Maximalgroesse eines Ringpuffers fuer aktuelle Datensaetze. Die Maximalgroesse kann sich auf Kosten anderer Puffer aendern. Mit dynamischen Puffergroessen kann man Lastspitzen besser abfangen.


CHUNK_Q_ARCH_TSK_ONLINE

private static int CHUNK_Q_ARCH_TSK_ONLINE
Blockgroesse eines Ringpuffers fuer aktuelle Datensaetze. In diesen Bloecken werden die Puffer vergroessert oder verkleinert.


NONWRITE_SUSPEND_LIMIT

private static double NONWRITE_SUSPEND_LIMIT
Ab dieser Auslastung werden Non-Write-Tasks angehalten


NONWRITE_RESUME_LIMIT

private static double NONWRITE_RESUME_LIMIT
Ab dieser Auslastung werden Non-Write-Tasks wieder fortgesetzt (mit Hysterese)


onlineDataInQueues

private AtomicInteger onlineDataInQueues
Zaehlt die insgesamt in den Warteschlangen enthaltenen Datensaetze


CAPA_Q_ARCH_TSK_REQ

public static int CAPA_Q_ARCH_TSK_REQ
Kapazitaet des Ringpuffers fuer nachgelieferte Datensaetze


archiveQueues

private ArchiveRingBuffer[] archiveQueues

archiveQueuesLeftout

private int[] archiveQueuesLeftout

nonArchQueues

private RingBuffer<ResultData>[] nonArchQueues

archiveTasks

private ArchiveTask[] archiveTasks

singleTsks

private SingleTask[] singleTsks

tskMgrs

private MultiTaskManager[] tskMgrs

flowCtrl

private FlowControlTask flowCtrl

archMgr

private ArchiveManager archMgr

didTree

private DataIdentTree didTree

logger

private Debug logger

terminationSemaphor

private Semaphore terminationSemaphor

terminated

private boolean terminated

archiveDataReceiver

private InQueuesMgr.ArchiveDataReceiver archiveDataReceiver

queryReceiver

private InQueuesMgr.QueryReceiver queryReceiver

arsSettingsReceiver

private InQueuesMgr.ArchiveSettingsReceiver arsSettingsReceiver

dataAckSender

private InQueuesMgr.DataAckSender dataAckSender

TOTAL_DS_RECEIVED

private static AtomicLong TOTAL_DS_RECEIVED

MSG_PID_QUEUE_FULL

public static final String MSG_PID_QUEUE_FULL
See Also:
Constant Field Values

nonWriteTasksSuspended

private boolean nonWriteTasksSuspended
Flag ob eine Ueberlastsituation vorliegt und deswegen alle nicht schreibenden Tasks unterbrochen werden muessen


nonWriteTasksSuspendSema

private Object nonWriteTasksSuspendSema

SHIFT_QUEUES_INTERVAL

private static final int SHIFT_QUEUES_INTERVAL
See Also:
Constant Field Values

_longTermTaskStatePublisher

private LongTermTaskStatePublisher _longTermTaskStatePublisher
Constructor Detail

InQueuesMgr

public InQueuesMgr(ArchiveManager aMgr,
                   DataIdentTree dTree)
            throws ConfigurationException
Erzeugt den Warteschlangen-Manager.

Parameters:
aMgr - Archiv-Manager
dTree - DataIdentTree
Throws:
ConfigurationException, - falls die IDs der Attributgruppe oder des Aspekts der ArchivAnfrageSchnittstelle nicht bestimmt werden koennen.
ConfigurationException
Method Detail

totalArchQueues

private static int totalArchQueues()

enlargeQueue

private void enlargeQueue(int queue)
Vergroessert eine Queue (auf Kosten einer anderen, falls die Gesamtgroesse ueberschritten ist).

Parameters:
queue - Zu vergroessernde Queue

setQueryTaskNumbers

public void setQueryTaskNumbers(int numHi,
                                int numMid,
                                int numLo)
Setzt die Anzahl der Threads fuer 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()

installQueryTask

private void installQueryTask(MultiTaskManager mtm,
                              int anz)

checkForSuspendNonWriteTask

public void checkForSuspendNonWriteTask()
                                 throws InterruptedException
Prueft ob Tasks temporaer blockiert werden sollen und blockiert ggf. den aufrufenden Task.

Diese Methode und #suspendNonWriteTasks(boolean) verwenden eine reduzierte Synchronisierung um die Zahl der durchlaufenen synchronized-Bloecke gering zu halten.

Throws:
InterruptedException

suspendNonWriteTasks

private void suspendNonWriteTasks()
Setzt das Suspend-Flag oder hebt es auf abhaengig von den beiden Grenzen.

Diese Methode und checkForSuspendNonWriteTask() verwenden eine reduzierte Synchronisierung um die Zahl der durchlaufenen synchronized-Bloecke gering zu halten. Voraussetzung: diese Methode wird nur von einem Thread aufgerufen.


getObjectsFromDav

public void getObjectsFromDav()
                       throws ConfigurationException
In dieser Methode wird allen Tasks (falls notwendig) die Moeglichkeit gegeben, benoetigte Objekte vom DAV zu laden.

Throws:
ConfigurationException

subscribeObjects

public void subscribeObjects()
In dieser Methode wird allen Tasks (falls notwendig) die Moeglichkeit gegeben, sich auf Objekte anzumelden. Abmelden geschieht zentral ueber den ConnectionManager.


startAllTasks

public void startAllTasks()
Startet alle Tasks (Multi- und Single-Tasks) sowie die Archiv-Tasks.


stopAllTasks

public void stopAllTasks()
                  throws InterruptedException
Beendet alle Tasks (Multi- und Single-Tasks) sowie die Archiv-Tasks.

Throws:
InterruptedException

waitForEmptyArchiveQueues

private void waitForEmptyArchiveQueues()

ringOfDeath

public void ringOfDeath(Task doomedTask)
Description copied from interface: RingOfDeathListener
Wird von einem Task vor dem Verlassen der Hauptschleife aufgerufen, wenn dem Task dieses Interface im Konstruktor uebergeben wurde..

Specified by:
ringOfDeath in interface RingOfDeathListener
Parameters:
doomedTask - Task, der gerade beendet wird

calcArchivTaskIndex

private static int calcArchivTaskIndex(long objID,
                                       long atgID,
                                       long aspID,
                                       int simVar,
                                       int numOfQueues)

calcOnlineArchivTaskIndex

public static int calcOnlineArchivTaskIndex(long objID,
                                            long atgID,
                                            long aspID,
                                            int simVar)
Verteilung der Datenidentifikationen auf die Online-Archiv-Tasks erfolgt anhand der IDs. Jede Datenidentifikation wird somit immer in dieselbe ArchiveQueue eingefuegt. Auf diese Weise kann die Reihenfolge des Eintreffens wesentlich einfacher erhalten werden.

Parameters:
objID - Objekt-ID
atgID - Attributgruppen-ID
aspID - Aspekt-ID
simVar - Simulationsvariante
Returns:
Summe der IDs und simVar modulo Anzahl der ArchivTasks

calcReqArchivTaskIndex

public static int calcReqArchivTaskIndex(long objID,
                                         long atgID,
                                         long aspID,
                                         int simVar)
Verteilung der Datenidentifikationen auf die Nachgefordert-Archiv-Tasks erfolgt anhand der IDs. Jede Datenidentifikation wird somit immer in dieselbe ArchiveQueue eingefuegt. Auf diese Weise kann die Reihenfolge des Eintreffens wesentlich einfacher erhalten werden.

Parameters:
objID - Objekt-ID
atgID - Attributgruppen-ID
aspID - Aspekt-ID
simVar - Simulationsvariante
Returns:
Summe der IDs und simVar modulo Anzahl der ArchivTasks

calcOnlineArchivTaskIndex

private int calcOnlineArchivTaskIndex(ResultData rd)
Verteilung der Datenidentifikationen auf die Archiv-Tasks erfolgt anhand der IDs. Jede Datenidentifikation wird somit immer in dieselbe ArchiveQueue eingefuegt. Auf diese Weise kann die Reihenfolge des Eintreffens wesentlich einfacher erhalten werden.

Parameters:
rd - Ergebnisdatensatz
Returns:
Summe der IDs modulo Anzahl der ArchivTasks

insertInArchiveQueueReq

public void insertInArchiveQueueReq(long archiveTime,
                                    ArchiveData ad)
Fuegt einen nachgeforderten Datensatz in die entsprechende Queue ein.

Parameters:
aTime - Archivzeit
rd - Datensatz

insertInSimVarDeleteQueue

public boolean insertInSimVarDeleteQueue(ResultData resultData)
Fügt dem Simulationsvarianten-Lösch-Task einen Auftrag hinzu.

Parameters:
resultData - Auftrag.
Returns:
true falls der Auftrag eingefügt werden konnte. false sonst.

insertSimVarParam

public boolean insertSimVarParam(SimulationResultData resultData)
Fügt dem Parametrierungs-Task einen weiteren Auftrag hinzu.

Parameters:
resultData - Auftrag. Enthält Informationen, auf welche Datenidentifikationen sich das Archivsystem anmelden soll.
Returns:
true falls der Auftrag eingefügt werden konnte. false sonst.

insertInDeleteRegularQueue

public boolean insertInDeleteRegularQueue(ResultData resultData)
Fügt dem Lösch-Task (automatisches Löschen) einen Auftrag hinzu.

Parameters:
resultData - Auftrag.
Returns:
true falls der Auftrag eingefügt werden konnte. false sonst.

insertInRequestQueue

public boolean insertInRequestQueue(ResultData resultData)
Fügt dem Nachfordern-Task einen Auftrag hinzu.

Parameters:
resultData - Auftrag.
Returns:
true falls der Auftrag eingefügt werden konnte. false sonst.

insertInLZVQueue

public boolean insertInLZVQueue(ResultData resultData)
Fügt dem LZV-Task einen Auftrag hinzu.

Parameters:
resultData - Auftrag.
Returns:
true falls der Auftrag eingefügt werden konnte. false sonst.

insertInBackupQueue

public boolean insertInBackupQueue(ResultData resultData)
Fügt dem Sicherungs-Task einen Auftrag hinzu.

Parameters:
resultData - Auftrag.
Returns:
true falls der Auftrag eingefügt werden konnte. false sonst.

insertCloseContainer

public void insertCloseContainer(long objID,
                                 ArchiveTask.CloseContainerObject cco)
Fuegt einen nachgelieferten Datensatz in die entsprechende Queue ein.

Parameters:
aTime - Archivzeit
rd - Datensatz

managePushTimeout

private long managePushTimeout(long nextTimeoutTime,
                               String usageText,
                               int tskIdx)

accountPushResult

private void accountPushResult(boolean pushSuccessful,
                               int tskIdx,
                               String logTitle,
                               ResultData resultData)

logCapaExceeded

private void logCapaExceeded(int maxsize,
                             String qname,
                             ResultData rd)

logSendMsgCapaExceeded

protected void logSendMsgCapaExceeded(int maxsize,
                                      String qname,
                                      ResultData rd)
Betriebsmeldung absetzen: Warteschlange voll.

Parameters:
maxsize - Kapazität der Warteschlange
qname - Name der Warteschlange
rd - Datensatz.

logCapaNoLongerExceeded

protected void logCapaNoLongerExceeded(int maxsize,
                                       String qname,
                                       int leftouts)

getArchiveQueuesOnlineStatus

public float[][] getArchiveQueuesOnlineStatus()
Returns:
Status der Warteschlangen fuer aktuelle Datensaetze

getArchiveQueuesRequestedStatus

public float[][] getArchiveQueuesRequestedStatus()
Returns:
Status der Warteschlangen fuer nachgelieferte Datensaetze

getNonArchiveQueuesStatus

public float[][] getNonArchiveQueuesStatus()
Returns:
Status der Warteschlangen fuer eingehende, nicht zu archivierende Objekte

getQueueStatus

private float[][] getQueueStatus(int whichQueues)

getTotalDSReceived

public static long getTotalDSReceived()
Returns:
Zahl aller seit dem Start oder letzten resetDSCounter() von getArchiveDataReceiver() empfangenen Datensaetze, egal ob diese archiviert werden oder nicht. Kann zur Test-Synchronisation verwendet werden.

getTotalOnlineQueuesCapa

public static int getTotalOnlineQueuesCapa()
Returns:
Gesamtkapazitaet aller Ringpuffers fuer aktuelle Datensaetze

getQueueLoad

public double getQueueLoad()
Returns:
Auslastungsgrad der Warteschlangen. Anhand dieses Wertes wird ermittelt, ob die Bearbeitung nicht schreibender Tasks ausgesetzt wird.

countOnlineDataInQueues

public int countOnlineDataInQueues()

resetDSCounter

private static void resetDSCounter()
Setzt alle Zaehler auf 0.


decrOnlineDataInQueues

public void decrOnlineDataInQueues()

getOnlineArchiveTask

public ArchiveTask getOnlineArchiveTask(long objId,
                                        long atgId,
                                        long aspId,
                                        int simVar)
Nur fuer Testzwecke: Liefert den gewuenschten ArchiveTask

Parameters:
objID - Objekt-ID
atgID - Attributgruppen-ID
aspID - Aspekt-ID
simVar - Simulationsvariante
Returns:
ArchiveTask
See Also:
#calcArchivTaskIndex(long,long,long)

getArchiveSettingsTask

public ArchiveSettingsTask getArchiveSettingsTask()
Liefert den Task, der fuer die Bearbeitung der Archiveinstellungen verantwortlich ist. Dies ist notwendig, damit der ArchiveManager beim Start einen ArchiveSettingsTask.ArSSettingListener einhaengen 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 fuer die Bearbeitung der Archiveinstellungen verantwortlich ist.

getSingleTask

public SingleTask getSingleTask(int taskIndex)
Liefert den gewuenschten SingleTask (um etwa Listener einzuhaengen)

Parameters:
taskIndex - Index der internen SingleTask-Liste
Returns:
SingleTask

getArchiveDataReceiver

public InQueuesMgr.ArchiveDataReceiver getArchiveDataReceiver()
Die Klasse ArchivConfig meldet die zu archivierenden Daten mit dem Objekt als Empfaenger an, das von dieser Methode geliefert wird.

Returns:
Empfaengerobjekt fuer zu archivierende Daten.

getDataAckSender

public InQueuesMgr.DataAckSender getDataAckSender()
Die Klasse ArchivConfig meldet die Quittungen fuer die zu archivierenden Daten mit dem Objekt als Sender an, das von dieser Methode geliefert wird.

Returns:
Senderobjekt fuer die Quittungen der zu archivierenden Daten.