Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Correction of some bugs and performance enhancement.
[jaceP2P.git] / src / jaceP2P / TokenThread.java
index 531a009..3c9d76b 100644 (file)
@@ -1,6 +1,8 @@
 package jaceP2P;
 
-import java.util.Vector;
+import java.rmi.RemoteException;
+import java.util.ArrayList;
+import and.Mapping.*;
 
 public class TokenThread extends Thread {
 
@@ -55,13 +57,23 @@ public class TokenThread extends Thread {
                // System.out.println("finished set token");
        }
 
-       @SuppressWarnings("unchecked")
+
        public void distribute() {
                System.out.println("totalDaemons="
                                + SuperNodeListe.Instance().getTotalDaemons());
                int nbLocal = Register.Instance().getSize();
                int totalDaemons;
-               Vector liste = SuperNodeListe.Instance().getListe();
+               ArrayList<Object> liste = SuperNodeListe.Instance().getListe();
+               
+               /******* Sébastien Miquée ********/
+               ArrayList<GNode> gnodes = null ;
+               try {
+                       gnodes = SuperNodeListe.Instance().getStubOf(LocalHost.Instance().getIP()).getGNodes() ;
+               } catch (RemoteException e1) {
+                       System.err.println( "Unable to retrieve local gnodes list !" ) ;
+                       e1.printStackTrace();
+               }
+               
                synchronized (SuperNodeListe.Instance()) {
                        synchronized (Register.Instance()) {
                                if (nbLocal > 5) {
@@ -73,17 +85,17 @@ public class TokenThread extends Thread {
                                                        if (((SuperNodeData) liste.get(i)).getNbOfNodes() < nbDaemons)
                                                                try {
                                                                        // System.out.println("Snode="+i+" nodes="+((SuperNodeData)liste.get(i)).getNbOfNodes());
-                                                                       Vector nodes = Register.Instance()
+                                                                       ArrayList<Node> nodes = Register.Instance()
                                                                                        .getListe();
                                                                        int amountToSend = nbDaemons
                                                                                        - ((SuperNodeData) liste.get(i))
                                                                                                        .getNbOfNodes();
-                                                                       Vector newVector = new Vector();
+                                                                       ArrayList<Node> newVector = new ArrayList<Node>() ;
                                                                        for (int j = 0; j < amountToSend; j++) {
-                                                                               newVector.add(nodes.elementAt(j));
+                                                                               newVector.add(nodes.get(j));
                                                                        }
                                                                        ((SuperNodeData) liste.get(i)).getStub()
-                                                                                       .sendSurplus(newVector);
+                                                                                       .sendSurplus(newVector, gnodes);
                                                                        for (int j = 0; j < amountToSend; j++)
                                                                                nodes.remove(0);
                                                                        int index = SuperNodeListe.Instance()
@@ -127,7 +139,7 @@ public class TokenThread extends Thread {
                        index = (index + 1) % SuperNodeListe.Instance().getListe().size();
                        // System.out.println("index="+index);
                        try {
-                               ((SuperNodeData) liste.elementAt(index)).getStub().setToken();
+                               ((SuperNodeData) liste.get(index)).getStub().setToken();
                                if (index != SuperNodeListe.Instance().existSuperNode(
                                                LocalHost.Instance().getIP()))
                                        token = false;
@@ -136,7 +148,7 @@ public class TokenThread extends Thread {
                        } catch (Exception e) {
                                try {
                                        System.err.println("Unable to send Token to "
-                                                       + ((SuperNodeData) liste.elementAt(index)).getIP()
+                                                       + ((SuperNodeData) liste.get(index)).getIP()
                                                        + " :" + e);
                                        /*
                                         * SuperNodeListe.Instance().removeSuperNode(((SuperNodeData)