@Override
  public void action() {

    MessageTemplate messageTemplate = MessageTemplate.MatchConversationId(CONVID_ACL_MESSAGE);
    ACLMessage messageRecu = myAgent.receive(messageTemplate);

    if (messageRecu != null) {
      // Si le problème n'est pas chargé, refuser
      if (((AgentGestionPopulation) myAgent).getMonProbleme() == null) {
        ACLMessage refuse = new ACLMessage(ACLMessage.REFUSE);
        gererMessage(refuse, messageRecu, "problem is not loaded");
      }
      // Si l'acte est de type REQUEST, analyser le message
      if (messageRecu.getPerformative() == ACLMessage.REQUEST) {
        // Si le language est correct, traiter la demande de génération
        if (messageRecu.getLanguage() != null
            && messageRecu.getLanguage().equals(LANGUAGE_ACL_MESSAGE)) {
          String content = messageRecu.getContent();
          // Si le contenu est conforme (nb d'individus), les générer
          if (content != null) {
            try {
              int nbIndividu = Integer.parseInt(content); // throw NumberFormatException

              ACLMessage agreeMessage = new ACLMessage(ACLMessage.AGREE);
              gererMessage(agreeMessage, messageRecu, "");

              ProblemeCARP p = ((AgentGestionPopulation) myAgent).getMonProbleme();
              ((AgentGestionPopulation) myAgent)
                  .getPopulationGlobale()
                  .genererIndividus(nbIndividu, p);

              ACLMessage informMessage = new ACLMessage(ACLMessage.INFORM);
              gererMessage(informMessage, messageRecu, "done");
            } catch (NumberFormatException nfException) {
              ACLMessage refuse = new ACLMessage(ACLMessage.REFUSE);
              gererMessage(refuse, messageRecu, "invalid arguments");
            }

          } else {
            ACLMessage refuse = new ACLMessage(ACLMessage.REFUSE);
            gererMessage(refuse, messageRecu, "invalid arguments");
          }
        } else {
          ACLMessage refuse = new ACLMessage(ACLMessage.REFUSE);
          gererMessage(refuse, messageRecu, "invalid ACL language");
        }
      } else {
        ACLMessage notUnderstoodMessage = new ACLMessage(ACLMessage.NOT_UNDERSTOOD);
        gererMessage(notUnderstoodMessage, messageRecu, "AGPop only serves request");
      }
    } else block();
  }
예제 #2
0
파일: CGaloPlaza.java 프로젝트: juanben/Ia
  @Override
  public void action() {

    SNumGente numGente = new SNumGente(2);
    STemperatura sense = new STemperatura();

    AireAcond vent = new AireAcond();
    imprimir = sense.toString() + vent.toString();
    if (sense.getVar() > 20) {
      vent.encender();
    } else {
      if (sense.getVar() < 13) {
        vent.apagar();
      }
    }
    System.out.println(sense.toString());
    System.out.println(vent.toString());

    ACLMessage mensajeRioCoca = getAgent().blockingReceive();
    if (mensajeRioCoca != null) {
      System.out.println(getAgent().getLocalName() + ": acaba de recibir el siguiente mensaje: ");
      System.out.println(mensajeRioCoca);
    }

    ACLMessage respuestaRioCoca = new ACLMessage(ACLMessage.INFORM);
    respuestaRioCoca.setSender(getAgent().getAID());
    respuestaRioCoca.setLanguage(mensajeRioCoca.getLanguage());
    respuestaRioCoca.addReceiver(mensajeRioCoca.getSender());
    respuestaRioCoca.setContent(String.valueOf(numGente.getVar()));
    System.out.println(getAgent().getLocalName() + ": Enviando contestacion");
    System.out.println(respuestaRioCoca);
    getAgent().send(respuestaRioCoca);

    // throw new UnsupportedOperationException("Not supported yet."); //To change body of generated
    // methods, choose Tools | Templates.
  }