public abstract class DataTransferPolicy extends Object
KExDaVDataPlugin
, mit ihr könnte man stattdessen z.B. verhindern, dass
leere Daten übertragen werden oder eine Art Rechteprüfung implementieren. Derzeit wird diese Klasse benutzt, um bei beidseitigen
Parameter-Daten-Übertragungen festzustellen, wenn beide Seiten annährend gleichzeitig Parameter senden. Dann wird das lokale System priorisiert und ein
unendlichen hin und her-wechseln der Daten verhindert. Siehe dazu ParameterDataTransferPolicy
. Außerdem werden die beiden Datenverteilersysteme über
den Threadpool entkoppelt, sodass z.B. ein hängenbleiben im sendData() die Empfangsqueue des anderen Datenverteilers nicht blockiert.Modifier and Type | Class and Description |
---|---|
private class |
DataTransferPolicy.DataAndPipe |
(package private) class |
DataTransferPolicy.DataPackage |
Modifier and Type | Field and Description |
---|---|
private static Debug |
_debug |
private static long |
_lastWarnTime |
private LowLevelDataPipe |
_lowLevelDataPipe |
private static UnboundedQueue<DataTransferPolicy.DataAndPipe> |
_queue |
Constructor and Description |
---|
DataTransferPolicy(LowLevelDataPipe lowLevelDataPipe)
Konstruktor
|
Modifier and Type | Method and Description |
---|---|
protected abstract void |
handleData(DataTransferPolicy.DataPackage dataPackage)
Template-Methode, die die Daten weiterverarbeiten soll
|
void |
handleData(KExDaVAttributeGroupData sourceData,
DataState dataState,
long dataTime)
Wird aufgerufen, wenn Daten eintreffen
|
protected void |
sendData(DataTransferPolicy.DataPackage dataPackage)
Sendet die Daten an das Zielsystem
|
private final LowLevelDataPipe _lowLevelDataPipe
private static final UnboundedQueue<DataTransferPolicy.DataAndPipe> _queue
private static volatile long _lastWarnTime
private static final Debug _debug
public DataTransferPolicy(LowLevelDataPipe lowLevelDataPipe)
lowLevelDataPipe
- Zugehöriger Datenkanal, in den die Daten eingespeist werden sollenpublic final void handleData(KExDaVAttributeGroupData sourceData, DataState dataState, long dataTime)
sourceData
- Daten (können null sein)dataState
- Daten-ZustanddataTime
- Daten-Zeitprotected abstract void handleData(DataTransferPolicy.DataPackage dataPackage)
dataPackage
- Datenpaketprotected final void sendData(DataTransferPolicy.DataPackage dataPackage)
dataPackage
- Datenpaket