top-dv top-umu

Datorkommunikation och Internet, HT06

Router Simulator API

För att implementera eran DVRouter klass har ni tillgång till de klasser och metoder som finns beskrivna i denna API. De flesta av de klasser och metoder som finns beskrivna här är nödvändiga för att ni ska få eran router att fungera på ett bra sätt. Denna API är skriven med hänsyn till laborationen så det finns här också tips på hur man kan sätta en del av parametrarna till vissa metoder samt exempel på vad vissa returvärden kan vara. När det är lämpligt att använda sig av någon av metoderna kan också finnas beskrivet.


Klass Datagram

Statiska konstanter

public static final int NORMAL

public static final int MULTICAST

public static final int DVUPDATE

public static final int PING

public static final int PONG

Konstruktor

public Datagram(int type, Address addr)

Beskrivning: Använd den här konstruktorn för att skapa paket av typen DVUPDATE, PING eller PONG.
Parametrar:
    type - talar om vilket typ av paket det är, t.ex. Datagram.DVUPDATE.
    addr - Routerns egna adress eller adressen som paketet skall skickas till, beroende på vad ni tycker är enklast. (Detta gäller för DVUPDATE paket.)

Metoder

public void setPingTime(long t)

Beskrivning: Ska köras om det är ett PING paket.
Parametrar: t - simuleringstiden då paketet ska tidsstämplas, sätts lämpligen med SimTimer.getTime() som finns beskriven längre ner.
Returnerar: Inget.

public void setPongTime(long t)

Beskrivning: När man tagit emot ett PING paket så ska man använda denna metod för att sätta tiden då det togs emot.
Parametrar: t - tidsstämpel då mottagaren tog emot paketet, sätts lämpligen med SimTimer.getTime().
Returnerar: Inget.

public long getRTT()

Beskrivning: Används när man tagit emot ett PONG paket, för att få reda på RTT (Round Trip Time) för det paketet.
Parametrar: Inga.
Returnerar: long - kostnaden att skicka paket över den länken där PONG paketet togs emot. -1 om paketet saknar den informationen.

public void setData(Object obj)

Beskrivning: Kan användas om man vill skicka data till en nod i nätverket.
Parametrar: obj - ett objekt av godtycklig datatyp.
Returnerar: Inget.

public Object getData()

Beskrivning: Används då man vill komma åt det data som finns lagrat i paketet.
Parametrar: Inga.
Returnerar: Det objekt som finns lagrat i paketet. Om inget objekt finns lagrat returneras null.

public void setAddress(Address addr)

Beskrivning: Används lite olika beroende på vad det är för paket. Är det ett PONG paket så sätter sändaren sin egen adress, så att mottagaren vet vilken nod som skickade PONG paketet. Är det ett NORMAL paket så sätts adressen till destinations noden.
Parametrar: addr - Se beskrivningen ovan.
Returnerar: Inget.

public Address getAddress()

Beskrivning: Kan användas om man vill komma åt destinationsadressen till detta paket om paketet har typ NORMAL. Är det PONG paket så ska det vara avsändarens adress.
Parametrar: Inga.
Returnerar: Ett adress objekt. Avsändaradressen eller destinationsadressen beroende på vilken typ paketet har.

public void setAddressVector(Vector dest)

Beskrivning: Används på ett MULTICAST paket.
Parametrar: dest - En vektor med alla destinationsadresser.
Returnerar: Inget.

public Vector getAddressVector()

Beskrivning: Används om det är ett MULTICAST paket.
Parametrar: Inga.
Returnerar: En vektor innehållande alla destinationsadresser.

public void setType(int t)

Beskrivning: Används för att sätta en typ på paketet.
Parametrar: t - typen på paketet, t.ex. Datagram.PING.
Returnerar: Inget.

public int getType()

Beskrivning: Används för att ta erda på vilket typ av paket det är.
Parametrar: Inga.
Returnerar: int - Heltal som representerar typen, t.ex. Datagram.PING.

public int getPriority()

Beskrivning: Används för att ta reda på vilken prioritet ett paket har. Är bara relevant att använda på paket av typen NORMAL och MULTICAST.
Parameter:Inga.
Returnerar:En int som motsvarar prioriteten, 1 - 4.

public int getSize()

Beskrivning: Kan användas för att få reda på storleken på paketet.
Parametrar: Inga.
Returnerar: int - Heltal som motsvarar storleken på paketet.

public Object clone()

Beskrivning: Om routern får ett paket av typen MULTICAST så kan det hända att paketet måste dupliceras för att skickas i två eller flera riktningar.
Parametrar: Inga.
Returnerar: Ett objekt som är en kopia på datagrammet. Tänk på att ni bör göra en 'castning' på det som returneras till typen Datagram.

Klass Address

Metoder

public int as()

Beskrivning: Om man vill veta vilket AS-nät adressen tillhör kan den här metoden användas.
Parametrar: Inga.
Returnerar: int - Heltalet x där adressen är x.y.z.

public int dv()

Beskrivning: Kan användas om man vill komma åt den del av adressobjektet som motsvarar DVRouter-adressen i det aktuella AS-nätet.
Parametrar: Inga.
Returnerar: int - Heltalet y där adressen är x.y.z.

public int host()

Beskrivning: Används då man vill få tag på det sista talet i adressen. Det som motsvarar HOST adressen.
Parametrar: Inga.
Returnerar: int - Heltalet z där adressen är x.y.z.

public String toString()

Beskrivning: Ger strängrepresentationen av adressen.
Parametrar: Inga.
Returnerar: String - En sträng på formen "x.y.z".

public boolean equals(Address a)

Beskrivning: Används då man vill veta om ett adressobjekt har samma adress som det egna objektet.
Parametrar: Address - Det adressobjekt som ska jämföras med det egna objektet.
Returnerar: boolean - true om adresserna är lika, annars false.
Undantag: Kastar ett NullPointerException om adressobjektet i parameterlistan är null.

Klass Edge

Statiska konstanter

public static final int ENABLED

public static final int DISABLED

public static final int REMOVED


Klass Port

Metoder

public Datagram getIncoming()

Beskrivning: Används då man vill komma åt det data som ligger först i inkön på porten.
Parametrar: Inga.
Returnerar: Datagram - Paketet som ligger först i inkön, null om inkön är tom.

public boolean isEmpty()

Beskrivning:Kontrollerar om inkön är tom eller ej.
Parametrar: Inge.
Returnerar: boolean - true om inkön är tom, annars false.

public boolean isFull()

Beskrivning: Kan användas för att kontrollera om utkön är full eller ej.
Parametrar: Inga.
Returnerar: boolean - true om utkön är full, annars false.

public int getStatus()

Beskrivning: Kontrollerar statusen på den 'lina' som porten är kopplad till.
Parametrar: Inga.
Returnerar: int - statusen, möjliga returvärden är: Edge.ENABLED, Edge.DISABLED och Edge.REMOVED.

public boolean tryEnqueue(Datagram d)

Beskrivning: Används för att lägga ett datagram paket i utkön.
Parametrar:Datagram - Det paket som skall läggas i utkön.
Returnerar: boolean - true om det lyckades, annars false (utkön kan vara full).

public void clearOutQueue()

Beskrivning: Rensar utkön i en port.

Statistics

Publika variabler

public int packetLoss

public int bytesTransferred

public int packetsTransferred


SimTimer

Metoder

public static long getTime()

Beskrivning: Används för att få reda på hur lång tid som har gått sedan simuleringen startades.
Parametrar: Inga.
Returnerar: long - Antal tidssteg som har gått sedan simuleringen startades.