Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package jason.infra.jade;
  
  import  jade.core.Agent;
  import  jade.domain.DFService;
  import  jade.domain.FIPAAgentManagement.DFAgentDescription;
  import  jade.domain.FIPAAgentManagement.ServiceDescription;
  import  jade.wrapper.AgentController;
  import  jade.wrapper.ContainerController;
  import  jade.wrapper.ControllerException;
 
 import java.io.File;
 import java.util.List;
 import java.util.Set;
 
 public class JadeRuntimeServices implements RuntimeServicesInfraTier {
 
     private static Logger logger  = Logger.getLogger(JadeRuntimeServices.class.getName());
     
     private ContainerController cc;
     
     private Agent jadeAgent;
     
     JadeRuntimeServices(ContainerController cc, Agent ag) {
         this. = cc;
          = ag;
     }
     
     public String createAgent(String agNameString agSourceString agClassList<StringarchClassesClassParameters bbParsSettings sttsthrows Exception {
         try {
             if (.isLoggable(.)) {
                 .fine("Creating jade agent " + agName + "from source " + agSource + "(agClass=" + agClass + ", archClass=" + archClasses + ", settings=" + stts);
             }
     
             AgentParameters ap = new AgentParameters();
             ap.setAgClass(agClass);
             ap.addArchClass(archClasses);
             ap.setBB(bbPars);
             ap.asSource = new File(agSource);
             
             if (stts == nullstts = new Settings();
             
             .createNewAgent(agNameJadeAgArch.class.getName(), new Object[] { apfalsefalse }).start();
             
             return agName;
         } catch (Exception e) {
             .log(."Error creating agent " + agNamee);
         }
         return null;
     }
     
     public void startAgent(String agName) {
         // nothing to do, the jade create new agent is enough
     }
 
     public AgArch clone(jason.asSemantics.Agent sourceList<StringarchClassesString agNamethrows JasonException {
         throw new JasonException("clone for JADE is not implemented!");
     }
 
     public Set<StringgetAgentsNames() {
         // TODO: make a cache list and update it when a new agent enters the system
         if ( == nullreturn null;
         try {
             Set<Stringags = new HashSet<String>();
             DFAgentDescription template = new DFAgentDescription();
             ServiceDescription sd = new ServiceDescription();
             sd.setType("jason");
             sd.setName(.);
             template.addServices(sd);
             DFAgentDescription[] ans = DFService.search(template);
             for (int i=0; i<ans.length; i++) {
                 ags.add(ans[i].getName().getLocalName());                
             }
             /*
             SearchConstraints c = new SearchConstraints();
             c.setMaxResults( new Long(-1) );
             AMSAgentDescription[] all = AMSService.search( jadeAgent, new AMSAgentDescription(), c);
             for (AMSAgentDescription ad: all) {
                 AID agentID = ad.getName();
                 if (    !agentID.getName().startsWith("ams@") && 
                         !agentID.getName().startsWith("df@") &&
                         !agentID.getName().startsWith(RunJadeMAS.environmentName) &&
                         !agentID.getName().startsWith(RunJadeMAS.controllerName)
                    ) {
                     ags.add(agentID.getLocalName());                
                 }
             } 
             */       
             return ags;
             //logger.warning("getAgentsName is not implemented yet!");
         } catch (Exception e) {
            .log(."Error getting agents' name"e);
        }        
        return null;
    }
    public int getAgentsQty() {
        try {
            return getAgentsNames().size();
        } catch (Exception e) {
            .log(."Error getting agents qty"e);
            return 0;
        }
    }
    public boolean killAgent(String agNameString byAg) {
        try {
            AgentController ac = .getAgent(agName);
            if (ac == null) {
                .warning("Agent "+agName+" does not exist!");
            } else {
                // TODO: if (ag.getTS().getAg().canBeKilledBy(byAg)) 
                ac.kill();    
                return true;
            }
        } catch (Exception e) {
            .log(."Error killing agent"e);
        }
        return false;
    }
   
    public void stopMAS() throws Exception {
        if ( != null) {
            new Thread() { // this command should not block the agent!
                public void run() {  
                    try {
                        .getPlatformController().kill();
                    } catch (ControllerException e) {
                        e.printStackTrace();
                    }  
                }
            }.start();
        }
    }
New to GrepCode? Check out our FAQ X