class AgentDaemon implements Agent {

  public void run() throws GrinderException {

    Runtime.getRuntime().addShutdownHook(m_shutdownHook);

    try {
      while (true) {
        m_delegateAgent.run();

        m_logger.info("agent finished");

        m_sleeper.sleepNormal(m_sleepTime);
      }
    }
    catch (ShutdownException e) {
      // Exiting.
    }
  }

  public  AgentDaemon(Logger logger, long sleepTime,  Agent agent);
    AgentDaemon(Logger logger, long sleepTime, Agent agent, Sleeper sleeper);

}