Advertisement
Shailrshah

Bully Election Algorithm

Apr 24th, 2015
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.50 KB | None | 0 0
  1. import java.util.Scanner;
  2. public class Main {
  3.     static boolean[] alive;
  4.     static int n;
  5.     static int election(int helper){
  6.         int i, j, temp=n;
  7.         for(i = helper; i<n; i++){ //election from i
  8.             if(!alive[i]) continue;
  9.             System.out.println("\nELECTION from "+(i+1));
  10.             for(j = i+1; j<n; j++){ //reply from j
  11.                 if(alive[j]){
  12.                     System.out.println("OK from "+ (j+1)+" to "+(i+1));
  13.                     temp = j;
  14.                 }
  15.                 else System.out.println("No reply from "+(j+1));
  16.             }
  17.         }
  18.         if(temp<n) helper = temp;
  19.         return helper;
  20.     }
  21.     public static void main(String[] args) {
  22.         Scanner sc = new Scanner(System.in);
  23.         System.out.print("Enter the number of nodes: ");
  24.         n = sc.nextInt();
  25.         alive = new boolean[n];
  26.         int i, j, helper = n;
  27.         for(i = 0; i< n; i++)
  28.             alive[i] = true;
  29.         int coordinator = n-1;
  30.         System.out.println("All nodes are made alive. "+(coordinator+1)+" is the coordinator.");
  31.         boolean cont = true;
  32.         while(cont){
  33.             System.out.println("1.Crash 2.Respawn 3.Check status 4. Exit");
  34.             switch(sc.nextInt()){
  35.                 case 1:
  36.                     System.out.print("Select a node to crash: ");
  37.                     int toCrash = sc.nextInt()-1;
  38.                     while(toCrash>=n||toCrash<0||!alive[toCrash]){
  39.                         System.out.print("Invalid input. Select a node to crash: ");
  40.                         toCrash = sc.nextInt()-1;
  41.                     }
  42.                     alive[toCrash] = false;
  43.                     System.out.println((toCrash+1)+" has crashed.");
  44.                     if(toCrash==coordinator) {
  45.                         System.out.print("Enter the node that finds out that " + (toCrash+1) + " is down: ");
  46.                         helper = sc.nextInt()-1;
  47.                         while (helper>=n||helper<0||!alive[helper]){
  48.                             System.out.print("Invalid input. Try again: ");
  49.                             helper = sc.nextInt()-1;
  50.                         }
  51.                         coordinator = election(helper);
  52.                         System.out.println((coordinator+1)+" is the coordinator.");
  53.                     }
  54.                     break;
  55.                 case 2:
  56.                     System.out.print("Select a node to respawn: ");
  57.                     int toRespawn = sc.nextInt()-1;
  58.                     while(toRespawn>=n||toRespawn<0||alive[toRespawn]) {
  59.                         System.out.println("Invalid input. Select a node to respawn: ");
  60.                         toRespawn = sc.nextInt() - 1;
  61.                     }
  62.                     alive[toRespawn] = true;
  63.                     System.out.println((toRespawn+1)+" is up and running.");
  64.                     coordinator = election(toRespawn);
  65.                     System.out.println((coordinator+1)+" is the coordinator.");
  66.                     break;
  67.                 case 3:
  68.                     for(i = 0; i< n; i++)
  69.                         if(alive[i]) System.out.println("Node "+(i+1)+": Alive");
  70.                         else System.out.println("Node "+(i+1)+": Dead");
  71.                     System.out.println((coordinator+1)+" is the coordinator.");
  72.                     break;
  73.                 case 4:
  74.                     cont = false;
  75.                     break;
  76.                 default: System.out.println("Invalid choice.");
  77.             }
  78.         }
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement