|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectde.bsvrz.kex.tls.osi2osi3.osi3.TlsNetworkLayer
public class TlsNetworkLayer
Implementierung der TLS-OSI-3 Netzwerkebene.
Nested Class Summary | |
---|---|
private class |
TlsNetworkLayer.AsyncDataLinkLayerEventHandler
Klasse zur Entkopplung von OSI2 und OSI7 beim Empfang von Daten. |
private static class |
TlsNetworkLayer.ChannelObject
|
private static class |
TlsNetworkLayer.LinkInfo
Informationen von Verbindungen zwischen Geräten. |
private static class |
TlsNetworkLayer.RouteInfo
|
Field Summary | |
---|---|
private TlsNetworkLayer.AsyncDataLinkLayerEventHandler |
_asyncDataLinkLayerEventHandler
|
private static Debug |
_debug
|
private Map |
_device2DirectRoutedDeviceListMap
|
private Map |
_device2LinksMap
Map, über die sich die von einem Gerät ausgehenden Verbindungen bestimmen lassen. |
private Map |
_device2RouteMap
|
int |
_localDeviceAddress
|
private Osi7LongTelegramRecombine |
_longTelegramCombiner
|
private Osi7LongTelegramSegment |
_longTelegramSegmenter
|
private LinkedList |
_networkLayerListeners
|
Fields inherited from interface de.bsvrz.kex.tls.osi2osi3.osi3.NetworkLayer |
---|
PRIORITY_CLASS_1, PRIORITY_CLASS_2 |
Constructor Summary | |
---|---|
TlsNetworkLayer()
|
Method Summary | |
---|---|
private void |
addAllRoutedRemoteDevices(Integer device,
Collection resultCollection)
|
private void |
addDeviceLink(int device,
int portAddress,
DataLinkLayer linkLayer,
DataLinkLayer.Link link,
int remotePortAddress,
int remoteDevice,
boolean linkIsTransparent,
boolean mirroredReceive,
boolean dontIncrementOsi3Pointer)
|
void |
addEventListener(NetworkLayerListener networkLayerListener)
Meldet einen Empfänger für Ereignis der Netzebene an. |
(package private) void |
addLink(int device,
int portAddress,
DataLinkLayer linkLayer,
DataLinkLayer.Link link,
int remotePortAddress,
int remoteDevice,
boolean linkIsTransparent,
boolean mirroredReceive,
boolean dontIncrementOsi3Pointer)
|
void |
completeInitialization()
Suchalgorithmus zur Ermittlung aller möglichen Routen zu anderen Geräten. |
private TlsNetworkLayer.LinkInfo |
findLinkInfo(int device,
int portAddress,
int remotePortAdress,
boolean resolveTransparentLinks)
Sucht eine Verbindung ausgehend von einem vorgegebenen Gerät über ein bestimmtes Adressenpaar. |
private TlsNetworkLayer.LinkInfo |
findLinkInfo(int device,
int portAddress,
int remotePortAdress,
boolean resolveTransparentLinks,
int ignoreDevice)
Sucht eine Verbindung ausgehend von einem vorgegebenen Gerät über ein bestimmtes Adressenpaar. |
DataLinkLayerListener |
getDataLinkLayerListener()
|
int[] |
getRoutedRemoteDevices(int device)
Bestimmt die Geräte, die über das angegebene Gerät erreichbar sind. |
private TlsNetworkLayer.RouteInfo |
getRouteInfo(int device)
|
private TlsNetworkLayer.RouteInfo |
getRouteInfo(Integer device)
|
void |
handleDataLinkLayerEvent(DataLinkLayerEvent event)
|
private void |
notifyLongReceive(int sender,
byte[] data)
Ein Langtelegramm muss verarbeitet werden |
private void |
notifyReceive(int sender,
byte[] data)
|
private void |
notifyStateChange(int device,
int state)
|
private void |
putRemoteDevice(Integer device,
Integer remoteDevice)
Speichert zu einem Ausgangsgerät ein direkt an diesem angeschlossenes entferntes Gerät ab, das über das Gerät erreichbar ist, d.h. |
private void |
putRouteInfo(Integer device,
TlsNetworkLayer.RouteInfo route)
|
void |
removeEventListener(NetworkLayerListener networkLayerListener)
Meldet einen angemeldeten Empfänger für Ereignisse der Netzebene wieder ab. |
private void |
sendData(DataLinkLayer.Link link,
int priority,
byte[] tlsOsi3Header,
byte[] data)
|
void |
sendData(int destination,
byte[] data,
boolean longTelegram)
Sendet ein Telegramm mit hoher Priorität an ein vorgegebenes Zielgerät. |
void |
sendData(int destination,
int priority,
byte[] data,
boolean longTelegram)
Sendet ein Telegramm mit vorgegebener Priorität an ein angegebenes Zielgerät. |
(package private) void |
setLocalDeviceAddress(int localDeviceAddress)
Setzt die Knotennummer des lokalen Geräts. |
void |
start()
Startet die Verarbeitung von Telegrammen |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private static final Debug _debug
public int _localDeviceAddress
private final LinkedList _networkLayerListeners
private Map _device2RouteMap
private Map _device2DirectRoutedDeviceListMap
private final TlsNetworkLayer.AsyncDataLinkLayerEventHandler _asyncDataLinkLayerEventHandler
private final Osi7LongTelegramRecombine _longTelegramCombiner
private Osi7LongTelegramSegment _longTelegramSegmenter
private Map _device2LinksMap
Constructor Detail |
---|
public TlsNetworkLayer()
Method Detail |
---|
public void addEventListener(NetworkLayerListener networkLayerListener)
NetworkLayer
addEventListener
in interface NetworkLayer
networkLayerListener
- Anzumeldender Empfänger, der die Verarbeitung von empfangenen Telegrammen und Statusänderungen von Verbindungen übernimmt.public void removeEventListener(NetworkLayerListener networkLayerListener)
NetworkLayer
removeEventListener
in interface NetworkLayer
networkLayerListener
- Abzumeldender Empfängerpublic int[] getRoutedRemoteDevices(int device)
NetworkLayer
getRoutedRemoteDevices
in interface NetworkLayer
device
- Gerät zu dem die darüber erreichbaren Geräte ermittelt werden sollen.
private void addAllRoutedRemoteDevices(Integer device, Collection resultCollection)
public void sendData(int destination, byte[] data, boolean longTelegram) throws DestinationUnreachableException
NetworkLayer
sendData
in interface NetworkLayer
destination
- Knotennummer des Geräts an das das Telegramm gesendet werden soll.data
- Nutzdaten aus Sicht des NetworkLayers (i.a. ein OSI-7 Telegrammblock).longTelegram
- true = Langtelegramm, das nicht der TLS Definition entspricht; false = Telegramm, das der TLS Definition entspricht
DestinationUnreachableException
- Wenn das angegebene Ziel nicht erreichbar ist.public void sendData(int destination, int priority, byte[] data, boolean longTelegram) throws DestinationUnreachableException
NetworkLayer
sendData
in interface NetworkLayer
destination
- priority
- data
- longTelegram
- true = Es soll ein Langtelegramm verschickt werden, das nicht der TLS-Norm entspricht
DestinationUnreachableException
private void sendData(DataLinkLayer.Link link, int priority, byte[] tlsOsi3Header, byte[] data) throws DestinationUnreachableException
DestinationUnreachableException
public void start()
NetworkLayer
start
in interface NetworkLayer
public DataLinkLayerListener getDataLinkLayerListener()
private void notifyLongReceive(int sender, byte[] data)
sender
- data
- private void notifyReceive(int sender, byte[] data)
private void notifyStateChange(int device, int state)
public void handleDataLinkLayerEvent(DataLinkLayerEvent event)
void setLocalDeviceAddress(int localDeviceAddress)
localDeviceAddress
- Knotennummer des lokalen Geräts.private TlsNetworkLayer.LinkInfo findLinkInfo(int device, int portAddress, int remotePortAdress, boolean resolveTransparentLinks)
device
- Gerät von dem aus gesucht werden soll.portAddress
- Port-Adresse am Gerät von dem die gesuchte Verbindung ausgeht.remotePortAdress
- Port-Adresse des anderen Geräts an dem die gesuchte Verbindung ankommt.resolveTransparentLinks
- Flag, das gesetzt sein muss, wenn bei Verbindungen, die auf OSI-3 Ebene transparent sind, (also Verbindungen zu KRI) rekursiv
weitergesucht werden soll.
private TlsNetworkLayer.LinkInfo findLinkInfo(int device, int portAddress, int remotePortAdress, boolean resolveTransparentLinks, int ignoreDevice)
device
- Gerät von dem aus gesucht werden soll.portAddress
- Port-Adresse am Gerät von dem die gesuchte Verbindung ausgeht.remotePortAdress
- Port-Adresse des anderen Geräts an dem die gesuchte Verbindung ankommt.resolveTransparentLinks
- Flag, das gesetzt sein muss, wenn bei Verbindungen, die auf OSI-3 Ebene transparent sind, (also Verbindungen zu KRI) rekursiv
weitergesucht werden soll.ignoreDevice
- Verbindungen zum angegebenen Gerät sollen bei der Suche ignoriert werden, um zyklische rekursive Aufrufe zu unterbinden.
void addLink(int device, int portAddress, DataLinkLayer linkLayer, DataLinkLayer.Link link, int remotePortAddress, int remoteDevice, boolean linkIsTransparent, boolean mirroredReceive, boolean dontIncrementOsi3Pointer)
private void addDeviceLink(int device, int portAddress, DataLinkLayer linkLayer, DataLinkLayer.Link link, int remotePortAddress, int remoteDevice, boolean linkIsTransparent, boolean mirroredReceive, boolean dontIncrementOsi3Pointer)
public void completeInitialization()
private void putRemoteDevice(Integer device, Integer remoteDevice)
device
- AusgangsgerätremoteDevice
- Entferntes Gerätprivate void putRouteInfo(Integer device, TlsNetworkLayer.RouteInfo route)
private TlsNetworkLayer.RouteInfo getRouteInfo(Integer device)
private TlsNetworkLayer.RouteInfo getRouteInfo(int device)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |