public class PuaClient
extends java.lang.Object
implements java.lang.AutoCloseable
Modifier and Type | Class and Description |
---|---|
private static class |
PuaClient.ProtocolListenerWrapper |
private class |
PuaClient.PuaSendControlListener |
Modifier and Type | Field and Description |
---|---|
private boolean |
_archiveOnline
Von PuA über den Listener-Mechanismus publizierter Archivsystem-Zustand (true == erreichbar, false == nicht erreichbar), false falls PuA nicht läuft.
|
private ClientApplication |
_client
Objekt an das Pua die Antwort sendet.
|
private boolean |
_closed
Ob der PuaClient geschlossen ist
|
private ConfigurationAuthority |
_configAuth
Konfigurationsverantwortlicher, an den die Anfrage gesendet wird.
|
private ClientDavInterface |
_dav
Verbindung zum Datenverteiler.
|
private DataDescription |
_ddProtocol
Datenbeschreibung der Protokoll-bezogenen Anfrage.
|
private DataDescription |
_ddScript
Datenbeschreibung der Skript-bezogenen Anfrage.
|
private java.util.concurrent.ExecutorService |
_flowControlExcecutor |
private int |
_flowControlWindowSize
Größe des Sliding Window für automatische Flusskontrolle beim Protokollabruf
|
private boolean |
_listenerOnline
Zustand der Sendesteuerung für PuA-Anfragen (wird nebnutzt um festzustellen, ob PuA läuft)
|
private boolean |
_listenerRequested
Ob eine Sendesteuerungsnachricht für die Protokollanfrage-Attributgruppe schon angekommen ist
|
private DataModel |
_model
Datenmodell
|
private ProtocolAnswerReceiver |
_protocolAnswerReceiver |
private java.util.Set<ProtocolListenerEx> |
_protocolListeners |
private int |
_protocolVersion |
private PuaClient.PuaSendControlListener |
_puaSendControlListener
Sendesteuerung für Protokollanfragen
|
private static java.util.concurrent.atomic.AtomicLong |
_requestId_dontUseDirectly
AnfrageId.
|
private java.util.Set<StatusListener> |
_statusListeners |
private long |
_timeout
Maximale Wartezeit in ms, bis eine Antwort eingetroffen sein muss bzw. wie lange ein Sendevorgang dauern darf.
|
static int |
CURRENT_PROTOCOL_VERSION
Unterstütze Protokoll-Version des Clients
|
private static Debug |
debug
Debug Ausgabe
|
static byte |
INVALID_STATUS
Status der Protokollerstellung konnte nicht abgefragt werden.
|
private static long |
PROTOCOL_COMPLETION_INTERFACE_ID |
DynamicObject |
recentlyCreatedScript
Zuletzt automatisch angelegtes Skriptobjekt.
|
long |
recentRequestId
Anfrage-Id des letzten Auftrags zur Protokollerstellung.
|
private static long |
WAIT
Wartezeit in Millisekunden bevor erneut gesendet wird.
|
Constructor and Description |
---|
PuaClient(ClientDavInterface dav,
ConfigurationAuthority configAuth) |
Modifier and Type | Method and Description |
---|---|
ProtocolRequestResult |
abortProtocol(long jobId)
Bricht eine protokollbezogene Operation ab.
|
ProtocolRequestResult |
abortProtocol(long jobId,
boolean resumeSaving)
Bricht eine protokollbezogene Operation ab.
|
ProtocolRequestResult |
addProtocolListener(ProtocolListener listener)
Meldet einen Empfänger an, der über fertiggestellte Protokolle informiert wird
|
ProtocolRequestResult |
addProtocolListener(ProtocolListenerEx listener)
Meldet einen Empfänger an, der über fertiggestellte Protokolle informiert wird
|
boolean |
addStatusListener(StatusListener listener)
Fügt einen Listener hinzu, mit dem sich der Anwender über Änderungen am Verfügbarkeitszustand von PuA
und dem von PuA verwendeten Archivsystem informieren kann.
|
void |
close()
Gibt belegte Ressourcen frei und meldet Datenverteiler-Anmeldungen ab.
|
private DynamicObject |
createNewScriptObject(java.lang.String pid,
java.lang.String name)
Erzeugt ein neues dynamischen Skriptobjekt und fügt es in die Menge der dynamischen Skriptobjekte ein.
|
ProtocolResultStream |
createProtocol(ProcessingParameter pp)
Stößt die Protokollerstellung an.
|
ProtocolRequestResult |
createScript(DynamicObject script,
AtlBase baseInfo,
java.lang.String source)
Sendet den Auftrag 'Skript anlegen/editieren'.
|
ProtocolRequestResult |
createScript(java.lang.String pid,
java.lang.String name,
AtlBase baseInfo,
java.lang.String source)
Sendet den Auftrag 'Skript anlegen/editieren'.
|
ProtocolRequestResult |
deleteSaveProtocol(long protocolId)
Löscht ein gespeichertes Protokoll.
|
ProtocolRequestResult |
deleteScript(DynamicObject script)
Entfernt ein Skriptobjekt und den zugehörigen Skriptquelltext.
|
private Tuple<java.lang.Long,ProcessingParameter>[] |
deserialize(byte[] data,
ProtocolRequestResult resultInfo)
Deserialisiert Protokollids und Protokollinformationen.
|
private java.util.List<JobInProgress> |
deserializeJobList(byte[] requestData) |
ProtocolRequestResult |
getDefaults(DynamicObject script,
AtlDefaults defaults,
AtlMeta meta)
Liefert die Standardwerte und die definierbaren Aspekte/Aliase eines Skripts zurück.
|
int |
getFlowControlWindowSize()
Gibt die Größe des "Sliding Window" für die automatische Flusskontrolle zurück
|
boolean |
getIsActive(ProtocolRequestResult resultInfo)
Deprecated.
Kann durch die Funktionen isPuaOnline() und isArchiveOnline() ersetzt werden, die detaillierte Informationen bieten
|
private boolean |
getIsActiveOld(ProtocolRequestResult resultInfo) |
java.util.List<JobInProgress> |
getJobList(ProtocolRequestResult resultInfo)
Ruft eine liste mit aktuell in Bearbeitung befindlichen Aufträgen ab.
|
ProtocolResultStream |
getProtocol(long protocolId,
boolean read)
Fragt ein bereits gespeichertes bzw. noch nicht abgerufenens Protokoll ab.
|
private Tuple<java.lang.Long,ProcessingParameter>[] |
getProtocolList(ProtocolRequestResult resultInfo,
java.lang.String user,
boolean read)
Liefert eine Liste der gespeicherten bzw. noch nicht abgerufenen Protokolle und Protokollinformationen.
|
private static long |
getRequestId()
Liefert eine eindeutige Anfrage-Id.
|
ProtocolResultStream |
getSavedProtocol(long protocolId)
Fragt ein bereits gespeichertes Protokoll ab.
|
Tuple<java.lang.Long,ProcessingParameter>[] |
getSavedProtocolList(ProtocolRequestResult resultInfo,
java.lang.String user)
Liefert eine Liste der gespeicherten Protokolle und Protokollinformationen.
|
int |
getServerProtocolVersion()
Gibt die vom Server aktuell unterstützte Protokollversion zurück.
|
ProtocolRequestResult |
getSource(DynamicObject script,
java.lang.StringBuffer source,
AtlMeta meta)
Liefert den Quelltext eines Skripts zurück.
|
byte |
getStatus(long jobId,
ProtocolRequestResult resultInfo)
Liefert den Status der Protokollerstellung.
|
ProtocolResultStream |
getUnreadProtocol(long protocolId)
Fragt ein noch nicht abgerufenes gespeichertes Protokoll ab.
|
Tuple<java.lang.Long,ProcessingParameter>[] |
getUnreadProtocolList(ProtocolRequestResult resultInfo,
java.lang.String user)
Liefert eine Liste der noch nicht abgerufenen Protokolle und Protokollinformationen.
|
(package private) void |
incrementProtocolVersion(int protocolVersion)
Setzt die Version des vom Servers unterstützten Übertragungsprotokolls.
|
boolean |
isArchiveOnline()
Gibt true zurück, wenn PuA erreichbar ist und PuA das Archiv erreichen kann.
|
boolean |
isPuaOnline()
Gibt true zurück, wenn PuA erreichbar ist
|
(package private) void |
protocolFinished(JobInProgress jobInProgess)
Informiert die Listener über die Fertigstellung eines Protokolls
|
(package private) void |
protocolRead(long id)
Informiert die Listener über das Gelesenwerden eines Protokolls
|
(package private) void |
protocolRemoved(long id)
Informiert die Listener über das Löschen eines Protokolls
|
ProtocolRequestResult |
removeProtocolListener(ProtocolListener listener)
Meldet einen Empfänger ab, der über fertiggestellte Protokolle informiert wurde
|
ProtocolRequestResult |
removeProtocolListener(ProtocolListenerEx listener)
Meldet einen Empfänger ab, der über fertiggestellte Protokolle informiert wurde
|
boolean |
removeStatusListener(StatusListener listener)
Entfernt einen, mit dem sich der Anwender über Änderungen am Verfügbarkeitszustand von PuA
und dem von PuA verwendeten Archivsystem informieren kann
|
ProtocolRequestResult |
resumeProtocol(long jobId)
Deprecated.
Diese Methode war zur Flusskontrolle gedacht und wird nicht mehr benötigt, weil mittlerweile eine automatische Flusskontrolle zwischen
PuA-Server und -Client implementiert ist.
|
(package private) void |
sendFlowControl(long jobId,
long targetNumDatasets)
Interne Methode, die von
ProtocolResultStream aus aufgerufen wird um die
automatische Flusskontrolle zu triggern |
private ProtocolRequestResult |
sendRequest(long requestId,
int opCode,
byte[] requestData)
Stellt eine Anfrage an Protokolle und Auswertungen.
|
private Tuple<java.lang.Long,ProcessingParameter>[] |
setAndLog(ProtocolRequestResult resultInfo,
java.lang.String string)
Fehlerbehandlung
|
void |
setFlowControlWindowSize(int flowControlWindowSize)
Setzt die Größe des "Sliding Window" für die automatische Flusskontrolle.
|
void |
setTimeout(long timeout)
Maximale Wartezeit in ms, bis eine Antwort eingetroffen sein muss.
|
private void |
sleep()
Wartet
WAIT Millisekunden lang. |
private ProtocolRequestResult |
startStopProtocolListener(byte... action) |
ProtocolRequestResult |
suspendProtocol(long jobId)
Deprecated.
Diese Methode war zur Flusskontrolle gedacht und wird nicht mehr benötigt, weil mittlerweile eine automatische Flusskontrolle zwischen
PuA-Server und -Client implementiert ist.
|
java.lang.String |
toString() |
(package private) void |
updateArsStatus(boolean status) |
public static final int CURRENT_PROTOCOL_VERSION
private static final Debug debug
public static final byte INVALID_STATUS
private static final long WAIT
private final PuaClient.PuaSendControlListener _puaSendControlListener
private final ClientDavInterface _dav
private final DataModel _model
private static final java.util.concurrent.atomic.AtomicLong _requestId_dontUseDirectly
private final ConfigurationAuthority _configAuth
private final DataDescription _ddProtocol
private final DataDescription _ddScript
private final ClientApplication _client
public DynamicObject recentlyCreatedScript
createScript(DynamicObject,AtlBase,String)
und createNewScriptObject(String,String)
gesetzt.private long _timeout
public long recentRequestId
createProtocol(ProcessingParameter)
gesetzt.private static final long PROTOCOL_COMPLETION_INTERFACE_ID
private final java.util.Set<ProtocolListenerEx> _protocolListeners
private final java.util.Set<StatusListener> _statusListeners
private final ProtocolAnswerReceiver _protocolAnswerReceiver
private int _flowControlWindowSize
private final java.util.concurrent.ExecutorService _flowControlExcecutor
private boolean _listenerOnline
private boolean _archiveOnline
private boolean _closed
private boolean _listenerRequested
private int _protocolVersion
public PuaClient(ClientDavInterface dav, ConfigurationAuthority configAuth) throws ScopeException, ConfigurationException
dav
- Verbindung zum Datneverteiler.configAuth
- Konfigurationsverantwortlicher, der verwendet wird.ScopeException
- Anfrage wird vom Konfigurationsverantwortlichen nicht unterstützt.ConfigurationException
- Fehler bei der Kommunikation mit der Konfigurationpublic void setTimeout(long timeout)
timeout
- Maximale Wartezeit, bis eine Antwort eingetroffen sein muss.private static long getRequestId()
public ProtocolResultStream createProtocol(ProcessingParameter pp) throws FailureException
pp
- AuftragsparameterFailureException
- Fehler beim Absetzen der Anfrage.public ProtocolRequestResult addProtocolListener(ProtocolListenerEx listener) throws FailureException
listener
- EmpfängerFailureException
public ProtocolRequestResult removeProtocolListener(ProtocolListenerEx listener) throws FailureException
listener
- EmpfängerFailureException
public ProtocolRequestResult addProtocolListener(ProtocolListener listener) throws FailureException
listener
- Empfänger. Für erweiterte Benachrichtigungen kann und sollte hier eine Instanz von ProtocolListenerEx
statt ProtocolListener
verwendet
werden.FailureException
public boolean addStatusListener(StatusListener listener)
listener
- Listener-Interface (nicht null)public boolean removeStatusListener(StatusListener listener)
listener
- Listener-Interface (nicht null)public ProtocolRequestResult removeProtocolListener(ProtocolListener listener) throws FailureException
listener
- EmpfängerFailureException
private ProtocolRequestResult startStopProtocolListener(byte... action) throws FailureException
FailureException
public ProtocolResultStream getSavedProtocol(long protocolId) throws FailureException
protocolId
- Protokoll-Id des gespeicherten Protokolls.FailureException
- Fehler beim Absetzen der Anfrage.public ProtocolResultStream getUnreadProtocol(long protocolId) throws FailureException
protocolId
- Protokoll-Id des gespeicherten Protokolls.FailureException
- Fehler beim Absetzen der Anfrage.public ProtocolResultStream getProtocol(long protocolId, boolean read) throws FailureException
protocolId
- Protokoll-Id des gespeicherten Protokolls.read
- true
gespeicherte Protokolle abrufen. false
noch nicht abgerufene Protokolle senden.FailureException
- Fehler beim Absetzen der Anfrage.private ProtocolRequestResult sendRequest(long requestId, int opCode, byte[] requestData) throws FailureException
requestId
- AnfrageIdopCode
- OperationscoderequestData
- AuftragsparameterFailureException
- Fehler bei Kommunikation mit der Konfiguration.@Deprecated public ProtocolRequestResult suspendProtocol(long jobId) throws FailureException
jobId
- Auftrags-ID des anzuhaltenden Auftrags. Bei Protokollerstellungsaufträgen identisch mit Protokoll-ID.
Die Auftrags-ID kann über ProtocolResultStream.getJobId()
oder getJobList(de.bsvrz.pua.prot.util.ProtocolRequestResult)
abgerufen werden.FailureException
- Fehler bei der Kommunikation mit der Konfiguration.@Deprecated public ProtocolRequestResult resumeProtocol(long jobId) throws FailureException
jobId
- Auftrags-ID des fortzusetzenden Auftrags. Bei Protokollerstellungsaufträgen identisch mit Protokoll-ID.
Die Auftrags-ID kann über ProtocolResultStream.getJobId()
oder getJobList(de.bsvrz.pua.prot.util.ProtocolRequestResult)
abgerufen werden.FailureException
- Fehler bei der Kommunikation mit der Konfiguration.public ProtocolRequestResult abortProtocol(long jobId)
ProtocolResultStream.take()
liefert nach dem Abbrechen null
und ProtocolResultStream.hasNext()
true
zurück.jobId
- Auftrags-ID des abzubrechenden Auftrags. Bei Protokollerstellungsaufträgen identisch mit Protokoll-ID.
Die Auftrags-ID kann über ProtocolResultStream.getJobId()
oder getJobList(ProtocolRequestResult)
abgerufen werden.public ProtocolRequestResult abortProtocol(long jobId, boolean resumeSaving)
ProtocolResultStream.take()
liefert nach dem Abbrechen null
und ProtocolResultStream.hasNext()
true
zurück.jobId
- Auftrags-ID des abzubrechenden Auftrags. Bei Protokollerstellungsaufträgen identisch mit Protokoll-ID.
Die Auftrags-ID kann über ProtocolResultStream.getJobId()
oder getJobList(ProtocolRequestResult)
abgerufen werden.resumeSaving
- Falls es sich um einen Auftrag zur Protokollerstellung handelt: Soll das Protokoll trotzdem gespeichert werden? Es wird dann nur die
Übertragung des Protokolls abgebrochen. True wird nur von PuA-Versionen ab 2.9.0 unterstützt.public byte getStatus(long jobId, ProtocolRequestResult resultInfo)
jobId
- Auftrags-ID des abzurufenden Auftrags. Bei Protokollerstellungsaufträgen identisch mit Protokoll-ID.
Die Auftrags-ID kann über ProtocolResultStream.getJobId()
oder getJobList(de.bsvrz.pua.prot.util.ProtocolRequestResult)
abgerufen werden.resultInfo
- Informationen über den Ablauf der Aktion. Kann null
sein.private boolean getIsActiveOld(ProtocolRequestResult resultInfo)
@Deprecated public boolean getIsActive(ProtocolRequestResult resultInfo)
resultInfo
- Ergebnis der Anfrage, seit PuA 2.9.0 immer erfolgreichpublic boolean isPuaOnline()
public boolean isArchiveOnline()
public Tuple<java.lang.Long,ProcessingParameter>[] getSavedProtocolList(ProtocolRequestResult resultInfo, java.lang.String user)
resultInfo
- In diesem Objekt werden Fehlermeldungen abgelegt.user
- Benutzer, für den die Anfrage ausgeführt wird. (kann null oder ein Leerstring sein, dann werden keine benutzerspezifischen Skripte zurückgegeben)null
bei Fehler.public Tuple<java.lang.Long,ProcessingParameter>[] getUnreadProtocolList(ProtocolRequestResult resultInfo, java.lang.String user)
resultInfo
- In diesem Objekt werden Fehlermeldungen abgelegt.user
- Benutzer, für den die Anfrage ausgeführt wird. (kann null oder ein Leerstring sein, dann werden keine benutzerspezifischen Protokolle zurückgegeben)null
bei Fehler.private Tuple<java.lang.Long,ProcessingParameter>[] getProtocolList(ProtocolRequestResult resultInfo, java.lang.String user, boolean read)
resultInfo
- In diesem Objekt werden Fehlermeldungen abgelegt.user
- Benutzer, für den die Anfrage ausgeführt wird. (kann null oder ein Leerstring sein, dann werden keine benutzerspezifischen Protokolle zurückgegeben)read
- true
gespeicherte Protokolle abrufen. false
noch nicht abgerufene Protokolle senden.null
bei Fehler.private Tuple<java.lang.Long,ProcessingParameter>[] deserialize(byte[] data, ProtocolRequestResult resultInfo)
data
- Serialisierte Daten.resultInfo
- Wird mit Ergebnis der Operation belegt.private Tuple<java.lang.Long,ProcessingParameter>[] setAndLog(ProtocolRequestResult resultInfo, java.lang.String string)
resultInfo
- string
- public ProtocolRequestResult deleteSaveProtocol(long protocolId)
protocolId
- Protokoll das gelöscht werden soll.public ProtocolRequestResult createScript(java.lang.String pid, java.lang.String name, AtlBase baseInfo, java.lang.String source)
recentlyCreatedScript
abgelegt.pid
- Pid des Skriptobjekts, das angelegt / editiert werden soll. Sollte nicht null
sein. Existiert noch kein Skriptobjekt mit der
übergebenen pid, so wird eins angelegt.name
- Name des Skripts.baseInfo
- Grundinformationen.source
- Skript Quelltext.public ProtocolRequestResult createScript(DynamicObject script, AtlBase baseInfo, java.lang.String source)
script
- Skriptobjekt das angelegt / editiert werden soll. Kann null
sein. Dann wird ein neues Skriptobjekt erzeugt. Der Name des
erzeugten Skriptobjekts ist das aktuelle Datum + Zeit. Auf das Skriptobjekt kann durch recentlyCreatedScript
zugegriffen werden.baseInfo
- Grundinformationen.source
- Skript Quelltext.private void sleep()
WAIT
Millisekunden lang.private DynamicObject createNewScriptObject(java.lang.String pid, java.lang.String name)
pid
- Pid die dem Objekt zugewiesen wird. Kann null
sein.name
- Name der dem Objekt zugewiesen wird. Kann null
sein.null
im Fehlerfall.public ProtocolRequestResult getSource(DynamicObject script, java.lang.StringBuffer source, AtlMeta meta)
script
- Skriptobjekt dessen Quelltext geliefert werden soll.source
- Buffer, in den der Skriptquelltext abgelegt wird.meta
- Metainformationen über das Skript.public ProtocolRequestResult getDefaults(DynamicObject script, AtlDefaults defaults, AtlMeta meta)
script
- Skriptobjekt dessen Standardwerte geliefert werden sollen.defaults
- Hier werden die Standardwerte abgelegt. Es ist ein leeres AtlDefaults-Objekt zu übergeben.meta
- Hier werden die Metainformationen über das Skript abgelegt. Es ist ein leeres AtlMeta-Objekt zu übergeben.public ProtocolRequestResult deleteScript(DynamicObject script)
script
- Skriptobjekt das gelöscht wird.void protocolFinished(JobInProgress jobInProgess)
jobInProgess
- Auftrags-Informationvoid protocolRemoved(long id)
id
- Protokoll-IDvoid protocolRead(long id)
id
- Protokoll-IDpublic java.util.List<JobInProgress> getJobList(ProtocolRequestResult resultInfo)
resultInfo
- Wird mit Ergebnis der Operation belegt. Darf null sein.abortProtocol(long)
abgebrochen werden kann.private java.util.List<JobInProgress> deserializeJobList(byte[] requestData)
void sendFlowControl(long jobId, long targetNumDatasets)
ProtocolResultStream
aus aufgerufen wird um die
automatische Flusskontrolle zu triggernjobId
- Auftrags-IDtargetNumDatasets
- Nummer des Datensatzes bis zu dem der Server Daten versenden sollpublic int getFlowControlWindowSize()
public void setFlowControlWindowSize(int flowControlWindowSize)
flowControlWindowSize
- Maximale Anzahl Protokoll-Ergebnis-Datensätze, die gleichzeitig von PuA-Server bis zum PuaClient gesendet werden.
Auf 0 setzen um Flusskontrolle abzuschalten.public void close()
close
in interface java.lang.AutoCloseable
void updateArsStatus(boolean status)
void incrementProtocolVersion(int protocolVersion)
protocolVersion
- (Siehe Protokollversionen.md)public int getServerProtocolVersion()
public java.lang.String toString()
toString
in class java.lang.Object