コード例 #1
0
ファイル: SiteAgent.java プロジェクト: Ooya/Robot-Sapiens
 final void handleSynchroMessage(SynchroMessage m) {
   if (connectedWith(m.community)) {
     if (!organizations.containsKey(m.community)) {
       kernelAgent.callHooks(Kernel.NEW_COMMUNITY, m.community);
       organizations.put(m.community, new Organization());
     }
     Organization localOrg = (Organization) organizations.get(m.community);
     switch (m.code) {
       case Kernel.CREATE_GROUP:
         localOrg.createGroup(
             m.initiator,
             true,
             m.groupName,
             m.newGroup.getDescription(),
             m.newGroup.getGroupIdentifier());
         kernelAgent.callHooks(
             Kernel.CREATE_GROUP, new AGRTrio(m.initiator, m.community, m.groupName, null));
         break;
       case Kernel.ADD_MEMBER_ROLE:
         localOrg.requestRole(m.initiator, m.groupName, m.roleName, m.memberCard);
         kernelAgent.callHooks(
             Kernel.ADD_MEMBER_ROLE,
             new AGRTrio(m.initiator, m.community, m.groupName, m.roleName));
         break;
       case Kernel.LEAVE_GROUP:
         if (localOrg.leaveGroup(m.initiator, m.groupName)) removeCommunity(m.community);
         kernelAgent.callHooks(
             Kernel.LEAVE_GROUP, new AGRTrio(m.initiator, m.community, m.groupName, null));
         break;
       case Kernel.NEW_COMMUNITY:
         establishConnectionWith(m.getSender(), true);
         break;
       case Kernel.DELETE_COMMUNITY:
         localOrg.removeAgentsFromKernel(m.getSender().getKernel());
         if (localOrg.isEmpty()) {
           removeCommunity(m.community);
           kernelAgent.callHooks(Kernel.DELETE_COMMUNITY, m.community);
         }
         break;
       case Kernel.REMOVE_MEMBER_ROLE:
         if (localOrg.leaveRole(m.initiator, m.groupName, m.roleName)) {
           removeCommunity(m.community);
         }
         kernelAgent.callHooks(
             Kernel.REMOVE_MEMBER_ROLE,
             new AGRTrio(m.initiator, m.community, m.groupName, m.roleName));
         break;
       case Kernel.MIGRATION:
         if (getDebug()) System.err.println("receiving a migration " + m.ref.toString());
         getCurrentKernel().receiveAgent(m.ref);
         System.gc();
         System.runFinalization();
         break;
     }
   } else
     switch (m.code) {
       case Kernel.NEW_COMMUNITY:
         kernelAgent.callHooks(Kernel.NEW_COMMUNITY, m.community);
         System.err.println("new community detected");
         if (gui != null)
           gui.refreshCommunities(); // establishConnectionWith(m.getSender(), true);
         break;
       case Kernel.DELETE_COMMUNITY:
         kernelAgent.callHooks(Kernel.DELETE_COMMUNITY, m.community);
         System.err.println("a community has been deleted "); // +organizations);
         if (gui != null)
           gui.refreshCommunities(); // establishConnectionWith(m.getSender(), true);
         break;
     }
 }