package qa.qcri.aidr.predict.common;
import org.apache.log4j.Logger;
/**
* Helper class for running asynchronous operations.
*
* @author jrogstadius
* @param <T>
* Input type for the worker function.
*/
public class AsyncWorker<T> implements Runnable {
public Function<T> function;
public T functionArg;
public Event<Object> onCompleted = new Event<Object>();
private static Logger logger = Logger.getLogger(AsyncWorker.class);
public AsyncWorker(Function<T> function, T data) {
this.function = function;
this.functionArg = data;
}
public void run() {
try {
function.execute(functionArg);
onCompleted.fire(this, null);
} catch (Exception e) {
logger.error("Exception in AsyncTask", e);
}
}
public void start() {
Thread t = new Thread(this);
t.start();
}
}