Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fixing some bugs.
[jaceP2P.git] / src / jaceP2P / JaceSuperNodeServer.java
index c85a7c5..5648cd6 100644 (file)
@@ -293,8 +293,24 @@ public class JaceSuperNodeServer extends UnicastRemoteObject implements
                        
                        for (int i = 0; i < ag.size(); i++) {
                                reg.addNode((Node) ag.get(i).getNode());
-                               gnodes.remove(ag.get(i));
-                               Register.Instance().removeNode((Node) ag.get(i).getNode());
+                               delGNodeFromList( (Node) ag.get(i).getNode() ) ;
+//                             gnodes.remove(ag.get(i));
+//                             Register.Instance().removeNode((Node) ag.get(i).getNode());
+                       }
+                       
+                       
+                       /** Searching extra nodes if any **/
+                       if( nbNoeuds > nbTasks )
+                       {
+                               int nb = nbNoeuds - nbTasks ;
+                               GNode sup = null ;
+                               
+                               for( int i = 0 ; i < nb ; i ++ )
+                               {
+                                       sup = al.getOtherGNode( gnodes ) ;
+                                       reg.addNodeBeg( (Node) sup.getNode() ) ;
+                                       delGNodeFromList( (Node) sup.getNode() ) ;
+                               }
                        }
                        
                        authorized = false ;
@@ -343,6 +359,7 @@ public class JaceSuperNodeServer extends UnicastRemoteObject implements
                                if( ((Node)gnodes.get(i).getNode()).getId() == _n.getId() ) 
                                {
                                        removedGNode = gnodes.remove( i ) ;
+                                       Register.Instance().removeNodeOfName( removedGNode.getName() ) ;
                                        break ;
                                }
                        }
@@ -472,7 +489,13 @@ public class JaceSuperNodeServer extends UnicastRemoteObject implements
        {
                if( _g != null )
                {
-                       workingOnGnodes() ;
+                       boolean free = false ;
+                       
+                       if( ! operating )
+                       {
+                               workingOnGnodes() ;
+                               free = true ;
+                       }
                        
                        for( int i = 0 ; i < gnodes.size() ; i++ )
                        {
@@ -483,7 +506,8 @@ public class JaceSuperNodeServer extends UnicastRemoteObject implements
                                }
                        }
                        
-                       operating = false ;
+                       if( free )
+                               operating = false ;
                }
                
        }