|
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.
|