Skip to content

Instantly share code, notes, and snippets.

@seysn
Created October 8, 2018 07:00
Show Gist options
  • Save seysn/535d672eabcbe755ccc9bd0e3c880de7 to your computer and use it in GitHub Desktop.
Save seysn/535d672eabcbe755ccc9bd0e3c880de7 to your computer and use it in GitHub Desktop.
Bully
import visidia.simulation.process.algorithm.SynchronousAlgorithm;
import visidia.simulation.process.messages.Door;
import visidia.simulation.process.messages.IntegerMessage;
import visidia.simulation.process.messages.StringMessage;
public class Bully extends SynchronousAlgorithm {
@Override
public Object clone() {
return new Bully();
}
@Override
public void init() {
int id = getId();
int nodes = getArity();
int elected = 10;
Door tempdoor = new Door();
//new
//First sendall
sendAll(new IntegerMessage(id));
nextPulse();
// No to the weak
for (int i = 0; i < nodes; i++) {
if ((Integer)(receive(tempdoor)).getData() < id) {
sendTo(tempdoor.getNum(),new StringMessage("No"));
}
}
nextPulse();
//Timeout test
while(elected != 0){
if(anyMsg()){
break;
}
else{
elected -= 1;
}
}
if (elected == 0){
sendAll(new StringMessage("I'm the best"));
}
}
}

Bully

Election : Un noeud envoie un message a tous les voisins qui sont plus faible que lui pour annoncer la victoire. Si un noeud ne recoit aucun message de victoire, cela veut dire qu'il est le meilleur, et le nouveau coordinateur.

Plus : Simple a mettre en place Resistant au crash

Moins : Beaucoup de messages envoyés Complexité plutot bof bof comme meme

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment