package org.apache.wicket.examples.websocket;
import java.util.concurrent.ScheduledExecutorService;
import org.apache.wicket.examples.websocket.progress.ProgressUpdater;
import org.apache.wicket.protocol.http.WebSession;
import org.apache.wicket.request.Request;
public class JSR356Session extends WebSession
{
private ProgressUpdater.ProgressUpdateTask progressUpdateTask;
public JSR356Session(Request request)
{
super(request);
}
public ProgressUpdater.ProgressUpdateTask getProgressUpdateTask()
{
return progressUpdateTask;
}
private synchronized void startTask() {
if (progressUpdateTask != null && progressUpdateTask.isRunning())
{
return;
}
JSR356Application application = JSR356Application.get();
ScheduledExecutorService service = application.getScheduledExecutorService();
progressUpdateTask = ProgressUpdater.start(application, getId(), service);
}
public synchronized void startOrCancelTask() {
if (progressUpdateTask != null && progressUpdateTask.isRunning() && !progressUpdateTask.isCanceled())
{
progressUpdateTask.cancel();
}
else
{
startTask();
}
}
public static JSR356Session get() {
return (JSR356Session)WebSession.get();
}
}