MàJ par récupération sur Clé USB et dans /mnt/hd/Chargement du pc portable
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								A61/Anneau/NOEUD.class
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								A61/Anneau/NOEUD.class
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										33
									
								
								A61/Anneau/NOEUD.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								A61/Anneau/NOEUD.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
			
		||||
/*
 | 
			
		||||
 * To change this template, choose Tools | Templates
 | 
			
		||||
 * and open the template in the editor.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *
 | 
			
		||||
 * @author Smea
 | 
			
		||||
 */
 | 
			
		||||
public interface NOEUD extends java.rmi.Remote {
 | 
			
		||||
    
 | 
			
		||||
    public NOEUD ConnectSuivant() throws java.rmi.RemoteException;
 | 
			
		||||
    
 | 
			
		||||
    public NOEUD GetTonSuivant() throws java.rmi.RemoteException;
 | 
			
		||||
    
 | 
			
		||||
    public String GetInfo() throws java.rmi.RemoteException;
 | 
			
		||||
    
 | 
			
		||||
    public void SetTonSuivant(NOEUD n) throws java.rmi.RemoteException;
 | 
			
		||||
    
 | 
			
		||||
    public void CloseSite(NOEUD n) throws java.rmi.RemoteException;
 | 
			
		||||
    
 | 
			
		||||
    public void Numerote(int n) throws java.rmi.RemoteException;
 | 
			
		||||
 | 
			
		||||
    public void KillSite(int n) throws java.rmi.RemoteException;
 | 
			
		||||
    
 | 
			
		||||
    public void Election(int capaciteInit, 
 | 
			
		||||
            int capaciteGagnante, 
 | 
			
		||||
            int siteGagnant,
 | 
			
		||||
            int siteInitiateur) throws java.rmi.RemoteException;
 | 
			
		||||
    
 | 
			
		||||
    public void ProclamationElection(int siteGagnant, int siteInitiateur) throws java.rmi.RemoteException;
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										256
									
								
								A61/Anneau/NOEUDImpl.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										256
									
								
								A61/Anneau/NOEUDImpl.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,256 @@
 | 
			
		||||
import java.io.BufferedReader;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.io.InputStreamReader;
 | 
			
		||||
import java.io.Serializable;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * To change this template, choose Tools | Templates
 | 
			
		||||
 * and open the template in the editor.
 | 
			
		||||
 */
 | 
			
		||||
import java.net.MalformedURLException;
 | 
			
		||||
import java.rmi.*;
 | 
			
		||||
import java.rmi.server.UnicastRemoteObject;
 | 
			
		||||
import java.util.StringTokenizer;
 | 
			
		||||
import java.util.logging.Level;
 | 
			
		||||
import java.util.logging.Logger;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *
 | 
			
		||||
 * @author Smea
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
public class NOEUDImpl extends UnicastRemoteObject implements NOEUD, Serializable{
 | 
			
		||||
    public NOEUD suivant = null;
 | 
			
		||||
    public String nom = "";
 | 
			
		||||
    public String rmi = "";
 | 
			
		||||
    public int numero = 0;
 | 
			
		||||
    public int survivance = 0;
 | 
			
		||||
 | 
			
		||||
    public NOEUDImpl(String n, String r) throws RemoteException {
 | 
			
		||||
        this.nom = n;
 | 
			
		||||
        this.rmi = r;
 | 
			
		||||
        if(n.equals("INIT")) {
 | 
			
		||||
            this.numero = 1;
 | 
			
		||||
            this.survivance = (int)(Math.random()*1024)+1;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public NOEUD ConnectSuivant() throws RemoteException {
 | 
			
		||||
        NOEUD suiv = null;
 | 
			
		||||
        try {
 | 
			
		||||
            NOEUD init = (NOEUD) Naming.lookup(this.rmi + "/INIT" );
 | 
			
		||||
            if(init.GetTonSuivant() == null) {
 | 
			
		||||
                suiv = init;
 | 
			
		||||
            }
 | 
			
		||||
            else { 
 | 
			
		||||
                suiv = init.GetTonSuivant();
 | 
			
		||||
                init.SetTonSuivant(this);
 | 
			
		||||
            }
 | 
			
		||||
        } catch (NotBoundException ex) {
 | 
			
		||||
            Logger.getLogger(NOEUDImpl.class.getName()).log(Level.SEVERE, null, ex);
 | 
			
		||||
        } catch (MalformedURLException ex) {
 | 
			
		||||
            Logger.getLogger(NOEUDImpl.class.getName()).log(Level.SEVERE, null, ex);
 | 
			
		||||
        }
 | 
			
		||||
        finally {
 | 
			
		||||
            return suiv;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public NOEUD GetTonSuivant() throws RemoteException {
 | 
			
		||||
        return this.suivant;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String GetInfo() throws RemoteException {
 | 
			
		||||
       return this.nom +"(" + this.numero + ")" +"-"+this.survivance ;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public void SetTonSuivant(NOEUD n) throws RemoteException {
 | 
			
		||||
        this.suivant = n;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void CloseSite(NOEUD n) throws RemoteException {
 | 
			
		||||
        if(this.GetTonSuivant().equals(n)) {
 | 
			
		||||
            this.SetTonSuivant(n.GetTonSuivant());
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
            this.GetTonSuivant().CloseSite(n);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void Numerote(int n) throws RemoteException {
 | 
			
		||||
        if(this.numero != 1) {
 | 
			
		||||
            this.numero = n+1;
 | 
			
		||||
            this.survivance = (int)(Math.random()*1024)+1;
 | 
			
		||||
            this.GetTonSuivant().Numerote(n+1);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void KillSite(int n) throws RemoteException {
 | 
			
		||||
        if(this.numero == n) {
 | 
			
		||||
            System.out.println("J'ai gagné, je m'en vais!");
 | 
			
		||||
            this.CloseSite(this);
 | 
			
		||||
            System.exit(1);
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
            
 | 
			
		||||
            this.GetTonSuivant().KillSite(n);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void Election(int capaciteInit, int capaciteGagnante, int siteGagnant, int siteInitiateur) throws RemoteException {
 | 
			
		||||
        int dif = this.survivance-capaciteInit;
 | 
			
		||||
        if(this.numero == siteInitiateur) {
 | 
			
		||||
           new Thread() {
 | 
			
		||||
               private int gagnant;
 | 
			
		||||
               private int initiat;
 | 
			
		||||
               public void start(int g, int i) {
 | 
			
		||||
                   this.gagnant = g;
 | 
			
		||||
                   this.initiat = i;
 | 
			
		||||
                   this.start();
 | 
			
		||||
               }
 | 
			
		||||
               public void run() {
 | 
			
		||||
                    try {
 | 
			
		||||
                        sleep(1000);
 | 
			
		||||
                        ProclamationElection(gagnant, initiat);
 | 
			
		||||
                    } catch (InterruptedException ex) {
 | 
			
		||||
                        Logger.getLogger(NOEUDImpl.class.getName()).log(Level.SEVERE, null, ex);
 | 
			
		||||
                    } catch (RemoteException ex) {
 | 
			
		||||
                        Logger.getLogger(NOEUDImpl.class.getName()).log(Level.SEVERE, null, ex);
 | 
			
		||||
                    }
 | 
			
		||||
               }
 | 
			
		||||
           }.start(siteGagnant,siteInitiateur);
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
            if(dif <= capaciteGagnante) {
 | 
			
		||||
                this.GetTonSuivant().Election(capaciteInit, Math.abs(this.survivance-capaciteGagnante), this.numero, siteInitiateur);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                this.GetTonSuivant().Election(capaciteInit, capaciteGagnante, siteGagnant, siteInitiateur);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void ProclamationElection(int siteGagnant, int siteInitiateur) throws RemoteException {
 | 
			
		||||
            System.out.println("Gagnant noeud numero " + siteGagnant);
 | 
			
		||||
            this.KillSite(siteGagnant);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public static void afficheMenu() {
 | 
			
		||||
        System.out.println('\t' + "K: Tuer ce noeud");
 | 
			
		||||
        System.out.println('\t' + "I: Infos de ce noeud");
 | 
			
		||||
        System.out.println('\t' + "N: Numeroter ");
 | 
			
		||||
        System.out.println('\t' + "E: Election ");
 | 
			
		||||
        System.out.println('\t' + "END: Quitter ");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static void main(String[] args) {
 | 
			
		||||
        String rmi = "rmi://" + args[0];
 | 
			
		||||
        String nom = args[1];
 | 
			
		||||
        NOEUD n = null;
 | 
			
		||||
        boolean cont = true;
 | 
			
		||||
        String cmd = "";
 | 
			
		||||
        BufferedReader bfr = new BufferedReader( new InputStreamReader( System.in) );
 | 
			
		||||
        if(nom.equals("INIT")) {
 | 
			
		||||
            try {
 | 
			
		||||
                n = new NOEUDImpl(nom, rmi);
 | 
			
		||||
                Naming.bind(rmi + "/" + nom, n);
 | 
			
		||||
                
 | 
			
		||||
            } catch (AlreadyBoundException ex) {
 | 
			
		||||
                try {
 | 
			
		||||
                    Naming.rebind(rmi + "/" + nom, n);
 | 
			
		||||
                } catch (RemoteException ex1) {
 | 
			
		||||
                    Logger.getLogger(NOEUDImpl.class.getName()).log(Level.SEVERE, null, ex1);
 | 
			
		||||
                } catch (MalformedURLException ex1) {
 | 
			
		||||
                    Logger.getLogger(NOEUDImpl.class.getName()).log(Level.SEVERE, null, ex1);
 | 
			
		||||
                }
 | 
			
		||||
            } catch (MalformedURLException ex) {
 | 
			
		||||
                Logger.getLogger(NOEUDImpl.class.getName()).log(Level.SEVERE, null, ex);
 | 
			
		||||
            } catch (RemoteException ex) {
 | 
			
		||||
                Logger.getLogger(NOEUDImpl.class.getName()).log(Level.SEVERE, null, ex);
 | 
			
		||||
            }
 | 
			
		||||
            finally {
 | 
			
		||||
                try {
 | 
			
		||||
                    n.SetTonSuivant(n.ConnectSuivant());
 | 
			
		||||
                } catch (RemoteException ex) {
 | 
			
		||||
                    Logger.getLogger(NOEUDImpl.class.getName()).log(Level.SEVERE, null, ex);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
            try {
 | 
			
		||||
                n = new NOEUDImpl(nom, rmi);
 | 
			
		||||
                n.SetTonSuivant(n.ConnectSuivant());
 | 
			
		||||
            } catch (RemoteException ex) {
 | 
			
		||||
                Logger.getLogger(NOEUDImpl.class.getName()).log(Level.SEVERE, null, ex);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        System.out.println("Menu de " + nom);
 | 
			
		||||
        System.out.println("Saisie commande:  ");
 | 
			
		||||
        
 | 
			
		||||
        while(cont) {
 | 
			
		||||
            afficheMenu();
 | 
			
		||||
            try {
 | 
			
		||||
                cmd = bfr.readLine();
 | 
			
		||||
            } catch (IOException ex) {
 | 
			
		||||
                Logger.getLogger(NOEUDImpl.class.getName()).log(Level.SEVERE, null, ex);
 | 
			
		||||
            }
 | 
			
		||||
            if(cmd.equals("K")) {
 | 
			
		||||
                try {
 | 
			
		||||
                    n.CloseSite(n);
 | 
			
		||||
                    System.exit(0);
 | 
			
		||||
                } catch (RemoteException ex) {
 | 
			
		||||
                    Logger.getLogger(NOEUDImpl.class.getName()).log(Level.SEVERE, null, ex);
 | 
			
		||||
                }
 | 
			
		||||
            } 
 | 
			
		||||
            else if(cmd.equals("I")) {
 | 
			
		||||
                try {
 | 
			
		||||
                        String tmp = "NOEUD " + n.GetInfo() + " suivant " + n.GetTonSuivant().GetInfo();
 | 
			
		||||
                    System.out.println(tmp);
 | 
			
		||||
                } catch (RemoteException ex) {
 | 
			
		||||
                    Logger.getLogger(NOEUDImpl.class.getName()).log(Level.SEVERE, null, ex);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            else if(cmd.equals("N")) {
 | 
			
		||||
                try {
 | 
			
		||||
                   NOEUD init = (NOEUD) Naming.lookup(rmi +"/INIT");
 | 
			
		||||
                   init.GetTonSuivant().Numerote(1);
 | 
			
		||||
                   init = null;
 | 
			
		||||
                } catch (NotBoundException ex) {
 | 
			
		||||
                    Logger.getLogger(NOEUDImpl.class.getName()).log(Level.SEVERE, null, ex);
 | 
			
		||||
                } catch (MalformedURLException ex) {
 | 
			
		||||
                    Logger.getLogger(NOEUDImpl.class.getName()).log(Level.SEVERE, null, ex);
 | 
			
		||||
                } catch (RemoteException ex) {
 | 
			
		||||
                    Logger.getLogger(NOEUDImpl.class.getName()).log(Level.SEVERE, null, ex);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
             else if(cmd.equals("E")) {
 | 
			
		||||
                try {
 | 
			
		||||
                   
 | 
			
		||||
                   NOEUD init = (NOEUD) Naming.lookup(rmi +"/INIT");
 | 
			
		||||
                   StringTokenizer stSurvi = new StringTokenizer(init.GetInfo(),"-");
 | 
			
		||||
                   stSurvi.nextToken();
 | 
			
		||||
                   String survie = stSurvi.nextToken();
 | 
			
		||||
                   init.GetTonSuivant().Election(new Integer(survie),1024,0,1);
 | 
			
		||||
                   init = null;
 | 
			
		||||
                } catch (NotBoundException ex) {
 | 
			
		||||
                    Logger.getLogger(NOEUDImpl.class.getName()).log(Level.SEVERE, null, ex);
 | 
			
		||||
                } catch (MalformedURLException ex) {
 | 
			
		||||
                    Logger.getLogger(NOEUDImpl.class.getName()).log(Level.SEVERE, null, ex);
 | 
			
		||||
                } catch (RemoteException ex) {
 | 
			
		||||
                    //Logger.getLogger(NOEUDImpl.class.getName()).log(Level.SEVERE, null, ex);
 | 
			
		||||
                } catch (Exception e) {
 | 
			
		||||
                
 | 
			
		||||
                }
 | 
			
		||||
            }  
 | 
			
		||||
             else if(cmd.equals("END")) {
 | 
			
		||||
                    cont = false;
 | 
			
		||||
            }
 | 
			
		||||
            cmd = "";
 | 
			
		||||
        }
 | 
			
		||||
       return; 
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user