package org.jactr.tools.throttle;
/*
* default logging
*/
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jactr.core.model.event.ModelEvent;
import org.jactr.core.model.event.ModelListenerAdaptor;
public class ThreadSleepingListener extends ModelListenerAdaptor
{
/**
* Logger definition
*/
static private final transient Log LOGGER = LogFactory
.getLog(ThreadSleepingListener.class);
private final long _minimumTimeMS;
private long _cycleStartTime;
public ThreadSleepingListener(double miniumTime)
{
_minimumTimeMS = (long) (miniumTime * 1000);
}
@Override
public void cycleStarted(ModelEvent me)
{
_cycleStartTime = me.getSystemTime();
}
@Override
public void cycleStopped(ModelEvent me)
{
long delta = _minimumTimeMS - (me.getSystemTime() - _cycleStartTime);
if (delta > 0)
try
{
if (LOGGER.isDebugEnabled())
LOGGER.debug(String.format("Sleeping %d ms", delta));
Thread.sleep(delta);
}
catch (Exception e)
{
}
}
}