peterson
Class Electie

java.lang.Object
  extended by peterson.Electie

public class Electie
extends java.lang.Object

Deze klasse regelt het hele electie-proces.

Author:
pjede

Field Summary
private  Semafoor beschikbareKanalen
           
private  int id
           
private  Queue kanalen
           
private  int poort
           
private  int poortBegin
           
private  Kanaal volgende
           
private  Kanaal vorige
           
 
Constructor Summary
Electie(int poort, int poortOpvolger, int id, Semafoor beschikbareKanalen, Queue kanalen)
          Maakt een nieuw electie-object, met alle benodigde informatie zodat er zometeen kan worden begonnen met de electie.
 
Method Summary
private  Kanaal newClient()
          Wacht tot de serverthread een kanaal met een (nieuwe)linkerbuur in de queue heeft gezet, en haalt dit kanaal dan uit de queue en levert hem op.
private  void nieuweVerbindingen(int poortOpvolger)
          Deze methode maakt nieuwe kanalen met de linker en rechterbuur.
 void startElectie()
          Het daadwerkelijke Peterson-electie algoritme, met shortcuts.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

id

private int id

poort

private int poort

poortBegin

private final int poortBegin

beschikbareKanalen

private Semafoor beschikbareKanalen

kanalen

private Queue kanalen

volgende

private Kanaal volgende

vorige

private Kanaal vorige
Constructor Detail

Electie

public Electie(int poort,
               int poortOpvolger,
               int id,
               Semafoor beschikbareKanalen,
               Queue kanalen)
Maakt een nieuw electie-object, met alle benodigde informatie zodat er zometeen kan worden begonnen met de electie.

Parameters:
poort - poort op de localhost waarop dit proces bereikbaar is
poortOpvolger - poort op de localhost van de rechterbuur in de originele ringconfiguratie
id - identitiet van dit proces
beschikbareKanalen - semafoor die aangeeft of er kanalen in de queue zitten
kanalen - de queue waarin de serverthread kanalen kan stoppen, en waaruit de newClient methode kanalen kan ophalen
See Also:
Semafoor, Queue
Method Detail

newClient

private Kanaal newClient()
Wacht tot de serverthread een kanaal met een (nieuwe)linkerbuur in de queue heeft gezet, en haalt dit kanaal dan uit de queue en levert hem op.

Returns:
een (nieuwe) verbinding met een linkerbuur

nieuweVerbindingen

private void nieuweVerbindingen(int poortOpvolger)
Deze methode maakt nieuwe kanalen met de linker en rechterbuur.

Parameters:
poortOpvolger - de nieuwe rechterbuur waarmee kanalen moeten worden gemaakt

startElectie

public void startElectie()
                  throws java.io.IOException,
                         java.lang.ClassNotFoundException
Het daadwerkelijke Peterson-electie algoritme, met shortcuts. Deze kiest een leider, en zorgt ervoor dat via print-statements het verkiezingsproces te volgen is.

Throws:
java.io.IOException
java.lang.ClassNotFoundException