package org.atricore.idbus.kernel.main.session.service;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.atricore.idbus.kernel.main.session.SSOSessionManager;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* @author <a href="mailto:sgonzalez@atricore.org">Sebastian Gonzalez Oyuela</a>
* @version $Id$
*/
/**
* Checks for valid sessions every second.
*/
public class DefaultSessionMonitor implements SSOSessionMonitor, Runnable {
private static final Log logger = LogFactory.getLog(DefaultSessionMonitor.class);
private long _interval;
private SSOSessionManagerImpl _m;
private boolean _started = true;
private ScheduledThreadPoolExecutor stpe;
DefaultSessionMonitor(SSOSessionManagerImpl m) {
_m = m;
_interval = m.getSessionMonitorInterval();
}
DefaultSessionMonitor(SSOSessionManagerImpl m, long interval) {
_interval = interval;
_m = m;
}
public void start() {
stpe = new ScheduledThreadPoolExecutor(3);
stpe.scheduleAtFixedRate(this, _interval, _interval, TimeUnit.MILLISECONDS);
_started = true;
}
public void stop() {
stpe.shutdown();
}
public long getInterval() {
return _interval;
}
public void setInterval(long interval) {
_interval = interval;
}
/**
* Check for valid sessions ...
*/
public void run() {
try {
if (logger.isTraceEnabled())
logger.trace("[run()] calling checkValidSessions ... ");
_m.checkValidSessions();
if (logger.isTraceEnabled())
logger.trace("[run()] calling checkValidSessions ... DONE");
} catch (Exception e) {
if (logger.isTraceEnabled())
logger.trace("[run()] calling checkValidSessions ... ERROR:" + e.getMessage(), e);
}
}
}