de.bsvrz.dav.dav.main
Class BestWayManager

java.lang.Object
  extended by de.bsvrz.dav.dav.main.BestWayManager
All Implemented Interfaces:
BestWayManagerInterface

public class BestWayManager
extends Object
implements BestWayManagerInterface

Diese Komponente verwaltet die aktuellen Weginformationen zu den anderen Datenverteilern. Diese Komponente hat verschiedene Methoden, so dass die Verbindungsverwaltung darauf zugreifen kann. Die eigentliche Verwaltung wird in der Klasse RoutingTable realisiert.

Author:
Kappich Systemberatung

Field Summary
private  ListsManagerInterface _listsManager
          Verwaltung von Anmeldelistentelegrammen
private  RoutingTable _routingTable
          Die Tabelle der Weginformationen
 
Constructor Summary
BestWayManager(long transmitterId, DistributionInterface distribution, ListsManagerInterface listsManager)
          Erzeugt eine Instanz dieser Komponente und hält für die interne Kommunikation eine Referenz auf die Verbindungsverwaltung fest.
 
Method Summary
 void addWay(RoutingConnectionInterface connection)
          Diese Methode wird von der Verbindungsverwaltung aufgerufen, wenn eine neue Verbindung zu einem Datenverteiler aufgebaut wurde.
 long getBestWay(long destinationDavId)
          Bestimmt den Datenverteiler über den der günstigste Weg zu einem Zieldatenverteiler aufgebaut werden kann. Diese Methode wird von der Verbindungsverwaltung aufgerufen, um den besten Weg zu einem Datenverteiler zu bestimmen.
(package private)  void handleDisconnection(RoutingConnectionInterface connection)
          Diese Methode wird von der Verbindungsverwaltung aufgerufen, wenn eine bestehende Verbindung nicht mehr vorhanden ist.
 void update(RoutingConnectionInterface connection, TransmitterBestWayUpdate transmitterBestWayUpdate)
          Diese Methode wird von der Protokollsteuerung aufgerufen, wenn eine neue Weginformationsnachricht angekommen ist.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_listsManager

private final ListsManagerInterface _listsManager
Verwaltung von Anmeldelistentelegrammen


_routingTable

private RoutingTable _routingTable
Die Tabelle der Weginformationen

Constructor Detail

BestWayManager

public BestWayManager(long transmitterId,
                      DistributionInterface distribution,
                      ListsManagerInterface listsManager)
Erzeugt eine Instanz dieser Komponente und hält für die interne Kommunikation eine Referenz auf die Verbindungsverwaltung fest. Eine Instanz der RoutingTable wird erzeugt und für die Weginformationsverwaltung bereitgestellt

Parameters:
transmitterId - Eigene Id des Datenverteilers
distribution - Die Verbindungsverwaltung des Datenverteilers
listsManager - Verwaltung von Anmeldelistentelegrammen
Method Detail

getBestWay

public final long getBestWay(long destinationDavId)
Bestimmt den Datenverteiler über den der günstigste Weg zu einem Zieldatenverteiler aufgebaut werden kann. Diese Methode wird von der Verbindungsverwaltung aufgerufen, um den besten Weg zu einem Datenverteiler zu bestimmen. Sie ruft die findBestConnection- Methode der RoutingTable auf und gibt die ID des Datenverteilers zurück, über den der optimale Weg läuft. Wenn kein Weg zum spezifizierten Datenverteiler existiert, wird -1 zurückgegeben.

Specified by:
getBestWay in interface BestWayManagerInterface
Parameters:
destinationDavId - Objekt-ID des Zieldatenverteilers.
Returns:
Objekt-ID des Datenverteilers, über den der günstigste Weg läuft, oder -1, falls keine Verbindung zum Zieldatenverteiler existiert.

addWay

public void addWay(RoutingConnectionInterface connection)
Diese Methode wird von der Verbindungsverwaltung aufgerufen, wenn eine neue Verbindung zu einem Datenverteiler aufgebaut wurde. Zuerst wird die addConnection-Methode der RoutingTable aufgerufen, um einen neuen Eintrag in der Wegverwaltungstabelle zu erzeugen. Danach wird die addEntry-Methode der Anmeldelistenverwaltung aufgerufen, um für den neuen Datenverteiler eine entsprechende Anmeldungsliste anzulegen.

Parameters:
connection - Verbindung, repräsentiert einen Eintrag in der RoutingTable

handleDisconnection

final void handleDisconnection(RoutingConnectionInterface connection)
Diese Methode wird von der Verbindungsverwaltung aufgerufen, wenn eine bestehende Verbindung nicht mehr vorhanden ist. Zuerst wird die removeConnection- Methode der RoutingTable aufgerufen, um den Eintrag der Verbindung connection aus der Wegverwaltungstabelle zu entfernen. Danach wird die handleDisconnection-Methode der Zuliefererdatenverwaltung aufgerufen, um aus der Zuliefererdatenverwaltungstabelle den Zulieferereintrag der spezifizierten Verbindung zu entfernen.

Parameters:
connection - Verbindung, repräsentiert einen Eintrag in der RoutingTable

update

public final void update(RoutingConnectionInterface connection,
                         TransmitterBestWayUpdate transmitterBestWayUpdate)
Diese Methode wird von der Protokollsteuerung aufgerufen, wenn eine neue Weginformationsnachricht angekommen ist. Zuerst wird die update-Methode der RoutingTable aufgerufen, um die besten Wege der spezifizierten Verbindungen in der Wegverwaltungstabelle zu aktualisieren. Da eine Änderung der besten Wege auch eine Änderung der Zulieferer eines Antrags bei der Zuliefererdatenverwaltung hervorrufen kann, wird pro Änderung die addEntry-Methode der Zuliefererdatenverwaltung aufgerufen.

Parameters:
connection - Verbindung, repräsentiert durch Eintrag in der routingTable
transmitterBestWayUpdate - Telegramm zur Aktualisierung der Matrix der günstigsten Wege