public class Server extends WanCom implements PropertyQueryInterface
Klasse, die als OSI-2 Protokollmodul für den server-seitigen Teil einer WanCom-Verbindung eingesetzt werden kann. Zur Verwendung dieses Protokollmoduls als Primary ist an dem jeweiligen Anschlußpunkt in der Konfiguration in der Attributgruppe “atg.anschlussPunkt” im Attribut “ProtokollTyp” der Wert “de.bsvrz.kex.tls.osi2osi3.osi2.wancom.Server” einzutragen. Zur Verwendung dieses Protokollmoduls als Secondary ist an dem jeweiligen Anschlußpunkt-Kommunikationspartner in der Konfiguration in der Attributgruppe “atg.anschlussPunktKommunikationsPartner” im Attribut “ProtokollTyp” der Wert “de.bsvrz.kex.tls.osi2osi3.osi2.wancom.Server” einzutragen. Im Parameter “atg.protokollEinstellungenStandard” des Anschlußpunkts werden Defaultswerte für alle Verbindungen an diesem Anschlußpunkt eingestellt. Im Parameter “atg.protokollEinstellungenPrimary” bzw. “atg.protokollEinstellungenSecondary” der dem Anschlußpunkt zugeordneten AnschlußPunktKommunikationsPartner werden individuelle Werte für die Verbindung zum jeweiligen Kommunikationspartner eingestellt. Die Parameterdatensätze können mehrere Einträge enthalten die jeweils aus einem Namen und einem Wert bestehen. Folgende Tabelle enthält die Namen, Defaultwerte und eine Beschreibung der unterstützten Einträge:
| Name | Defaultwert | Beschreibung |
|---|---|---|
| wancom.port | 7100 | Lokale TCP-Portnummer auf der Verbindungen entgegengenommen werden. |
| wancom.version | 35 | Im WanCom-Header übertragene Version des eingesetzten Protokolls. |
| wancom.keepAliveTime | 20 | Zeit in Sekunden zwischen dem Versand von 2 Keep-Alive Telegrammen. |
| wancom.keepAliveTimeoutCount | 3 | Anzahl von in Folge vergangenen keepAliveTime-Intervallen ohne Empfang eines KeepAlive-Telegramms bevor die Verbindung abgebrochen wird. |
| wancom.keepAliveType | 50 | WanCom-Type-Feld in KeepAlive-Telegrammen. |
| wancom.tlsType | 600 | WanCom-Type-Feld in versendeten TLS-Telegrammen. |
| wancom.tlsTypeReceive | WanCom-Type-Feld in empfangenen TLS-Telegrammen. Dieser Wert muss nur angegeben werden, wenn er sich vom WanCom-Typen zum Versand (wancom.tlsType) unterscheidet. Wenn dieser Wert nicht angegeben wurde, wird der Wert von wancom.tlsType auch zum Empfang verwendet. Wenn der Wert -1 angegeben wird, dann werden alle WanCom-Typ-Werte (außer dem Wert für KeepAlive-Telegramme wancom.keepAliveType) akzeptiert. | |
| wancom.connectRetryDelay | 60 | Wartezeit in Sekunden, bevor ein fehlgeschlagener Verbindungsversuch wiederholt wird. |
| wancom.localAddress | Lokale Adresse, die in Wan-Com-Header als Absender eingetragen werden soll. Ein leerer Text, wird automatisch durch die aktuelle lokale Adresse der Wan-Com-Verbindung ersetzt. |
| Modifier and Type | Class and Description |
|---|---|
static class |
Server.ActionType
Definiert die Aktionscodes, die von den API-Methoden zur Steuerung des Protokoll-Threads versendet werden
|
private static class |
Server.IllegalTelegramException
Signalisiert Fehler in empfangenen Telegrammen
|
private class |
Server.Link
Realisiert ein Verbindungsobjekt, das die Kommunikation mit einem einzelnen Kommunikationspartner verwaltet.
|
private static class |
Server.PriorizedByteArray
Dient zur Speicherung eines zu versendenden Telegramms mit einer zugeordneten Priorität
|
private class |
Server.Worker
Klasse die das Runnable-Interface implementiert, vom Protokollthread ausgeführt wird und den Protokollablauf steuert
|
| Modifier and Type | Field and Description |
|---|---|
private static Debug |
_debug
Logger für Debugausgaben
|
private java.util.List<Server.Link> |
_links
Verbindungen zu Kommunikationspartnern, die durch das Protokoll verwaltet werden
|
private java.lang.Object |
_protocolLock
Monitor Objekt, das zur Synchronisation des Protokoll-Threads und den API-Zugriffen von fremden Threads auf das Protokoll koordiniert
|
private ProtocolState |
_protocolState
Aktueller Zustand des Protokolls
|
(package private) Server.Worker |
_worker
Runnable Objekt, das vom Protokollthread ausgeführt wird und den Protokollablauf steuert
|
private java.lang.Thread |
_workThread
Thread des Protokolls
|
| Constructor and Description |
|---|
Server()
Default-Konstruktor, mit dem neue WanCom-Server Protokolle instanziiert werden können
|
| Modifier and Type | Method and Description |
|---|---|
void |
abort()
Bricht die Kommunikation auf allen Verbindungen des Protokolls sofort ab und beendet anschließend das Protokoll.
|
DataLinkLayer.Link |
createLink(int remoteAddress)
Erzeugt ein neues Verbindungsobjekt.
|
boolean |
isStarted()
Bestimmt, ob die Kommunikation dieses Protokolls bereits mit der Methode
start() aktiviert wurde. |
void |
setDavConnection(ClientDavInterface connection)
Nimmmt die Verbindung zum Datenverteiler entgegen.
|
void |
setProperties(java.util.Properties properties)
Setzt neue Protokollparameter.
|
void |
shutdown()
Terminiert alle Verbindungen des Protokolls und beendet anschließend das Protokoll.
|
void |
start()
Initialisiert das Protokoll und startet den Protokoll-Thread
|
java.lang.String |
toString() |
createKeepAliveTelegramBytes, getDefaultProperty, getMaximumDataSizeaddEventListener, allowConnection, allowConnection, checkConnection, getLocalAddress, getProperty, notifyEvent, notifyEvent, removeEventListener, setLocalAddressclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetPropertyprivate static final Debug _debug
Logger für Debugausgaben
private final java.lang.Thread _workThread
Thread des Protokolls
final Server.Worker _worker
Runnable Objekt, das vom Protokollthread ausgeführt wird und den Protokollablauf steuert
private final java.lang.Object _protocolLock
Monitor Objekt, das zur Synchronisation des Protokoll-Threads und den API-Zugriffen von fremden Threads auf das Protokoll koordiniert
private ProtocolState _protocolState
Aktueller Zustand des Protokolls
private java.util.List<Server.Link> _links
Verbindungen zu Kommunikationspartnern, die durch das Protokoll verwaltet werden
public Server()
throws java.io.IOException
Default-Konstruktor, mit dem neue WanCom-Server Protokolle instanziiert werden können
java.io.IOExceptionpublic java.lang.String toString()
toString in class java.lang.Objectpublic void setDavConnection(ClientDavInterface connection)
Nimmmt die Verbindung zum Datenverteiler entgegen. Diese Methode wird vom OSI-3 Modul nach dem Erzeugen des OSI-2 Moduls durch den jeweiligen Konstruktor aufgerufen. Eine Implementierung eines Protokollmoduls kann sich bei Bedarf die übergebene Datenverteilerverbindung intern merken, um zu späteren Zeitpunkten auf die Datenverteiler-Applikationsfunktionen zuzugreifen.
setDavConnection in interface DataLinkLayerconnection - Verbindung zum Datenverteilerpublic boolean isStarted()
Bestimmt, ob die Kommunikation dieses Protokolls bereits mit der Methode start() aktiviert wurde.
isStarted in interface DataLinkLayertrue, wenn die Kommunikation dieses Protokolls bereits aktiviert wurde, sonst false.public void start()
Initialisiert das Protokoll und startet den Protokoll-Thread
start in interface DataLinkLayerpublic void shutdown()
Terminiert alle Verbindungen des Protokolls und beendet anschließend das Protokoll.
shutdown in interface DataLinkLayerpublic void abort()
Bricht die Kommunikation auf allen Verbindungen des Protokolls sofort ab und beendet anschließend das Protokoll.
abort in interface DataLinkLayerpublic void setProperties(java.util.Properties properties)
Setzt neue Protokollparameter. Alle Verbindungen werden mit den neuen Parametern reinitialisiert.
setProperties in interface DataLinkLayersetProperties in class AbstractDataLinkLayerproperties - Neue Protokoll und VerbindungsparameterDataLinkLayer.Link.getProperty(java.lang.String)public DataLinkLayer.Link createLink(int remoteAddress)
Erzeugt ein neues Verbindungsobjekt.
createLink in interface DataLinkLayerremoteAddress - OSI-2 Adresse des Kommunikationspartners