Class SingleClientSenderTask

All Implemented Interfaces:
de.bsvrz.dav.daf.main.ClientSenderInterface
Direct Known Subclasses:
BackupTask, DeleteSimVarTask, HeaderRestoreTask, LZVTask, QueryInfoTask, RequestGapTask, RestoreTask

public abstract class SingleClientSenderTask
extends SingleTask
implements de.bsvrz.dav.daf.main.ClientSenderInterface
Diese Klasse ist die Basis-Klasse aller Single-Tasks, die mit dem DAV kommunizieren.
  • Field Summary

    Fields
    Modifier and Type Field Description
    protected de.bsvrz.dav.daf.main.config.AttributeGroup atgQuery
    Attributgruppe der Archiv-Anfrage und -Antwort.
    protected de.bsvrz.dav.daf.main.DataDescription ddResponse
    DataDescription der Archiv-Antwort.
    protected de.bsvrz.sys.funclib.dataSerializer.Deserializer deserializer  
    protected de.bsvrz.dav.daf.main.config.SystemObject queryAppObj
    Applikations-Objekt des Absenders der Archiv-Anfrage.
    protected int queryIdx
    Anfrage-Index der anfragenden Applikation zur Archiv-Anfrage.
    static int SENDCONTROL_TIMEOUT
    Zeit in Millisekunden, die auf eine positive Sendesteuerung gewartet wird
    protected int serializerVersion
    Serialisiererversion der anfragenden Applikation, mit der auch die Antwort erstellt werden muss.
    protected java.lang.Object syncObj
    Spezielles Objekt zur Synchronisiserung.

    Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.RepeatingTask

    TERMINATE_TASK

    Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.AbstractTask

    _debug, _shouldTerminate, archMgr, didTree, persMgr

    Fields inherited from interface de.bsvrz.dav.daf.main.ClientSenderInterface

    START_SENDING, STOP_SENDING, STOP_SENDING_NO_RIGHTS, STOP_SENDING_NOT_A_VALID_SUBSCRIPTION
  • Constructor Summary

    Constructors
    Constructor Description
    SingleClientSenderTask​(ArchiveManager archiveMgr, java.util.concurrent.BlockingQueue<java.lang.Object> inputData)
    Erzeugt einen neuen SingleClientSenderTask.
  • Method Summary

    Modifier and Type Method Description
    void dataRequest​(de.bsvrz.dav.daf.main.config.SystemObject object, de.bsvrz.dav.daf.main.DataDescription dataDescription, byte state)  
    void getObjectsFromDav()
    Wird aufgerufen, sobald eine Datenverteilerverbindung verfügbar ist.
    protected void init​(de.bsvrz.dav.daf.main.Data data)
    Initialisiert den Task für eine neue Archivanfrage.
    protected void insertData​(de.bsvrz.sys.funclib.dataSerializer.Serializer serializer)  
    boolean isRequestSupported​(de.bsvrz.dav.daf.main.config.SystemObject object, de.bsvrz.dav.daf.main.DataDescription dataDescription)  
    protected de.bsvrz.dav.daf.main.archive.ArchiveDataSpecification[] parseArchiveDataSpec​(de.bsvrz.sys.funclib.dataSerializer.Deserializer ds)  
    protected void sendErrorResponse​(int messageTypeResult, java.lang.String errorMessage)  
    protected void sendErrorResponse​(java.lang.String errorMessage)  
    protected void sendSuccessResponse()  
    protected void sendSuccessResponse​(int messageTypeResult)  
    protected void subscribeSender()
    Meldet den Task als Sender für Archiv-Antworten an das angegebene Empfaenger-Applikations-Objekt an.
    protected void unsubscribeSender()
    Meldet den Task als Sender für Archiv-Antworten an das angegebene Empfaenger-Applikations-Objekt ab.

    Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.QueueTask

    offer, step, submit, terminateTask, work

    Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.RepeatingTask

    execute

    Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task

    addTaskStepListener, cleanUp, getName, getState, isAlive, isTerminated, join, removeTaskStepListener, setName, start, taskStepDone

    Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.AbstractTask

    getArchMgr, shouldTerminate, suspendTaskIfNecessary

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • SENDCONTROL_TIMEOUT

      public static final int SENDCONTROL_TIMEOUT
      Zeit in Millisekunden, die auf eine positive Sendesteuerung gewartet wird
      See Also:
      Constant Field Values
    • syncObj

      protected final java.lang.Object syncObj
      Spezielles Objekt zur Synchronisiserung. Immer dieses anstatt this verwenden!
    • serializerVersion

      protected int serializerVersion
      Serialisiererversion der anfragenden Applikation, mit der auch die Antwort erstellt werden muss.
    • atgQuery

      protected de.bsvrz.dav.daf.main.config.AttributeGroup atgQuery
      Attributgruppe der Archiv-Anfrage und -Antwort.
    • ddResponse

      protected de.bsvrz.dav.daf.main.DataDescription ddResponse
      DataDescription der Archiv-Antwort.
    • queryAppObj

      protected de.bsvrz.dav.daf.main.config.SystemObject queryAppObj
      Applikations-Objekt des Absenders der Archiv-Anfrage.
    • queryIdx

      protected int queryIdx
      Anfrage-Index der anfragenden Applikation zur Archiv-Anfrage.
    • deserializer

      protected de.bsvrz.sys.funclib.dataSerializer.Deserializer deserializer
  • Constructor Details

    • SingleClientSenderTask

      public SingleClientSenderTask​(ArchiveManager archiveMgr, java.util.concurrent.BlockingQueue<java.lang.Object> inputData)
      Erzeugt einen neuen SingleClientSenderTask.
      Parameters:
      archiveMgr - Der Archiv-Manager.
      inputData - Eingangswarteschlange
  • Method Details

    • getObjectsFromDav

      public void getObjectsFromDav()
      Description copied from class: AbstractTask
      Wird aufgerufen, sobald eine Datenverteilerverbindung verfügbar ist. Kann benutzt werden, um Objekte zu laden und Anmeldungen durchzuführen.

      Wichtig: Diese Methode wird unter Umständen im Konstruktor ausgeführt und sollte daher nicht erwarten, dass die Subklasse (`this`) vollständig initialisiert ist.

      Overrides:
      getObjectsFromDav in class AbstractTask
    • init

      protected void init​(@Nullable de.bsvrz.dav.daf.main.Data data) throws de.bsvrz.sys.funclib.dataSerializer.NoSuchVersionException
      Initialisiert den Task für eine neue Archivanfrage.
      Throws:
      de.bsvrz.sys.funclib.dataSerializer.NoSuchVersionException
    • sendErrorResponse

      protected void sendErrorResponse​(java.lang.String errorMessage)
    • sendSuccessResponse

      protected void sendSuccessResponse()
    • sendErrorResponse

      protected void sendErrorResponse​(int messageTypeResult, java.lang.String errorMessage)
    • sendSuccessResponse

      protected void sendSuccessResponse​(int messageTypeResult)
    • insertData

      protected void insertData​(de.bsvrz.sys.funclib.dataSerializer.Serializer serializer) throws java.io.IOException
      Throws:
      java.io.IOException
    • subscribeSender

      protected void subscribeSender() throws de.bsvrz.dav.daf.main.OneSubscriptionPerSendData
      Meldet den Task als Sender für Archiv-Antworten an das angegebene Empfaenger-Applikations-Objekt an. Registriert den StreamMultiplexer für den Empfang von Flusskontroll-Steuerungspaketen.
      Throws:
      de.bsvrz.dav.daf.main.OneSubscriptionPerSendData
    • unsubscribeSender

      protected void unsubscribeSender()
      Meldet den Task als Sender für Archiv-Antworten an das angegebene Empfaenger-Applikations-Objekt ab.
    • dataRequest

      public void dataRequest​(de.bsvrz.dav.daf.main.config.SystemObject object, de.bsvrz.dav.daf.main.DataDescription dataDescription, byte state)
      Specified by:
      dataRequest in interface de.bsvrz.dav.daf.main.ClientSenderInterface
    • isRequestSupported

      public boolean isRequestSupported​(de.bsvrz.dav.daf.main.config.SystemObject object, de.bsvrz.dav.daf.main.DataDescription dataDescription)
      Specified by:
      isRequestSupported in interface de.bsvrz.dav.daf.main.ClientSenderInterface
    • parseArchiveDataSpec

      protected de.bsvrz.dav.daf.main.archive.ArchiveDataSpecification[] parseArchiveDataSpec​(de.bsvrz.sys.funclib.dataSerializer.Deserializer ds) throws java.lang.Exception
      Throws:
      java.lang.Exception