コード例 #1
0
  @Override
  public void funcExecGuard(EventBESA ebesa) {
    DataRemoverCarroResult evArgs = (DataRemoverCarroResult) ebesa.getData();
    AgentBESA agente = this.getAgent();
    EstadoCarro estado = (EstadoCarro) agente.getState();

    // TODO - Despues de que el agente se haya posicionado para ser removido, se debe enviar
    if (evArgs.result == true) {
      ClassLogger.LogMsg("El agente fue removido del parqueadero. Termina!", LogLevel.DEBUG);
    } else {
      // Espera un segundo y vuelve a enviar el evento
      try {
        Thread.sleep(estado.actualizacionMs);
      } catch (InterruptedException ex) {
        ClassLogger.LogMsg("Excepcion al momentode ejecutar el timer: " + ex.getMessage());
      }

      DataRemoverCarro removeCarro = new DataRemoverCarro();
      removeCarro.sender = agente.getAlias();
      EventBESA event = new EventBESA(GuardaRemoverCarro.class.getName(), removeCarro);
      try {
        AgHandlerBESA ah = agent.getAdmLocal().getHandlerByAlias(estado.pisoActual);
        ah.sendEvent(event);
      } catch (ExceptionBESA ex) {
        ClassLogger.LogMsg(ex.getMessage(), LogLevel.ERROR);
      }
    }
  }
コード例 #2
0
  @Override
  public void funcExecGuard(EventBESA ebesa) {
    DataUpdatePeaton data = (DataUpdatePeaton) ebesa.getData();
    AgentBESA agent = this.getAgent();
    EstadoPiso estado = (EstadoPiso) agent.getState();
    String sender = data.sender;

    Point posicion = new Point();
    posicion.x = data.posX;
    posicion.y = data.posY;
    ClassElemento estadoCasilla = estado.ObtenerEstadoCasilla(posicion.x, posicion.y, sender);

    boolean isDesocupado = false;
    if (TipoElemento.IsAgent(estadoCasilla.tipo) == false
        && estadoCasilla.tipo != TipoElemento.Ninguno) isDesocupado = true;

    if (isDesocupado) {
      boolean result = estado.ActualizarAgente(data.sender, posicion, null);
      if (result == false) {
        ClassLogger.LogMsg("No se encuentra el nombre del agente en la lista: " + sender);
        isDesocupado = false;
      }
    }

    DataUpdatePeatonResult dataEvent = new DataUpdatePeatonResult();
    dataEvent.sender = agent.getAlias();
    dataEvent.resultado = isDesocupado;
    dataEvent.posX = posicion.x;
    dataEvent.posY = posicion.y;

    EventBESA event = new EventBESA(GuardaUpdatePeatonResult.class.getName(), dataEvent);
    try {
      AgHandlerBESA ah = agent.getAdmLocal().getHandlerByAlias(sender);
      ah.sendEvent(event);
    } catch (ExceptionBESA e) {
      ReportBESA.error(e);
    }
  }