예제 #1
0
파일: Manager.java 프로젝트: eyal-leshem/cs
  /**
   * inform the server about the fail
   *
   * @param e1 - uncatch exception
   * @param conf - agnet configration
   * @param net - the communicate module for sending the task
   */
  private static void unCatchException(AgentServiceException e1, AgentServiceConf conf) {
    // error while parsing send acknowledgment to the server

    Communicate net;
    try {
      net = new Communicate();
    } catch (AgentServiceException e3) {
      // the agent will be dead without notice to server because problem in connection
      return;
    }
    String errorMsg =
        conf.getAgentName() + "- Unexpected error : " + e1.getMessage() + "\n" + "agent fall - RIP";

    ACK ack = new ACK();
    ack.setOK(false);
    ack.setErrorMsg(errorMsg);
    ack.setFullExceptionString(ExceptionHelper.getCustomStackTrace(e1));
    try {
      net.sendResponse(ack, conf);
    } catch (AgentServiceException e) {
      // try again
      try {
        net.sendResponse(ack, conf);
      } catch (AgentServiceException e2) {
      }
    }
  }
예제 #2
0
파일: Manager.java 프로젝트: eyal-leshem/cs
  /**
   * go on loop : 1.ask the server for tasks 2. execute the tasks 3. sleep x time
   *
   * @param args
   * @throws Exception
   */
  public static void main(String[] args) {

    AgentServiceLogger logger = AgentServiceLogger.getInstance();
    logger.init();

    // get the configuration  of the agent service
    try {
      getConf();

      Communicate net = new Communicate();

      // install all models
      Parser parser = new Parser();
      ImplementorManager impManager = ImplementorManager.getInstance();

      // run for ever
      while (true) {

        // get and updates from the net
        String updates = net.getNewTasks();

        if (updates != null && !updates.equals("null")) {
          ArrayList<Message> messages = null;

          // parse the string message that get from the server
          try {
            messages = parser.parseMessage(updates);
          } catch (Exception e) {
            // error while parsing send acknowledgment to the server
            ACK ack = new ACK();
            ack.setOK(false);
            ack.setErrorMsg("problem to parse update string -" + updates);
            ack.setFullExceptionString(ExceptionHelper.getCustomStackTrace(e));
            ack.setTaskId("0");
            net.sendResponse(ack, conf);
          }

          // commit all the tasks
          if (messages != null) {
            for (Message msg : messages) {
              ACK retMsg = impManager.commitTask(msg);
              net.sendResponse(retMsg);
            }
          }
        } // end of if(updates!=null)

        // commit all task
        try {
          Thread.sleep(conf.getSleepTime() * 1000);
        } catch (InterruptedException e) {
        }
      } // end of while(true)

    } catch (AgentServiceException e1) {
      unCatchException(e1, conf);
    }
  }