1 package com.sslexplorer.tasks; 2 3 import java.util.HashMap ; 4 import java.util.Map ; 5 6 import org.apache.commons.logging.Log; 7 import org.apache.commons.logging.LogFactory; 8 9 import com.sslexplorer.security.SessionInfo; 10 11 public class TaskManager { 12 final static Log log = LogFactory.getLog(TaskManager.class); 13 14 private Map <Integer , Task> tasks = new HashMap <Integer , Task>(); 15 private int id; 16 17 private static TaskManager instance; 18 19 public static TaskManager getInstance() { 20 if(instance == null) { 21 instance = new TaskManager(); 22 } 23 return instance; 24 } 25 26 public synchronized void startTask(final Task task, SessionInfo session) { 27 id++; 28 tasks.put(id, task); 29 task.init(session, id); 30 Thread t = new Thread () { 31 public void run() { 32 try { 33 task.run(); 34 } 35 catch(Exception e) { 36 log.error("Task failed. ", e); 37 } 38 finally { 39 task.complete(); 40 } 41 } 42 }; 43 t.start(); 44 } 45 46 public Task getTask(int id) { 47 return tasks.get(id); 48 } 49 50 public void remove(Task task) { 51 log.info("Removing task " + task); 52 tasks.remove(task.hashCode()); 53 } 54 } 55 | Popular Tags |