Пример #1
0
 final synchronized void deconnection(String id) {
   for (Iterator i = distantKernels.iterator(); i.hasNext(); ) {
     AgentAddress distantK = (AgentAddress) i.next();
     if (distantK.getKernel().getID().equals(id)) {
       debug("disconnected from " + id);
       for (Iterator j = organizations.entrySet().iterator(); j.hasNext(); ) {
         Map.Entry e = (Map.Entry) j.next();
         Organization org = (Organization) e.getValue();
         if (org.removeAgentsFromKernel(distantK.getKernel())) {
           leaveGroup("communities", (String) e.getKey());
           sendAll(
               new SynchroMessage(
                   Kernel.LEAVE_GROUP,
                   getAddress(),
                   COMMUNITIES,
                   (String) e.getKey(),
                   null,
                   null));
           sendAll(new SynchroMessage(Kernel.DELETE_COMMUNITY, (String) e.getKey()));
           j.remove();
         }
       }
       kernelAgent.callHooks(Kernel.DISCONNECTED_FROM, distantK.getKernel());
       kernelAgent.callHooks(Kernel.REMOVE_MEMBER_ROLE, distantK, COMMUNITIES, PUBLIC, SITE);
       i.remove();
       System.gc();
       System.runFinalization();
       break;
     }
   }
   if (gui != null) gui.refreshCommunities();
 }
Пример #2
0
 final synchronized void tryMigration(KernelAddress destination, AgentAddress traveler) {
   AbstractAgent ref = Kernel.getReference(traveler);
   Message message = new SynchroMessage(ref);
   for (Iterator i = distantKernels.iterator(); i.hasNext(); ) {
     AgentAddress potentialReceiver = (AgentAddress) i.next();
     if (potentialReceiver.getKernel().equals(destination)) {
       message.setReceiver(potentialReceiver);
       break;
     }
   }
   if (message.getReceiver() != null && ref != null) {
     // kernelAgent.callshook 	...  updateDistantOrgs(Kernel.MIGRATION,traveler,null,null,null);
     if (ref instanceof Agent) {
       ((Agent) ref).getAgentThread().stop();
       ref.setCurrentKernel(null);
       // ref.messageBox=null;
     }
     getCurrentKernel().removeAgentFromOrganizations(traveler);
     getCurrentKernel().removeReferenceOf(traveler);
     message.setSender(getAddress());
     sendDistantMessage(message);
   }
 }