package io.hops.util;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.yarn.server.resourcemanager.RMContext;
/**
* Created by antonis on 8/26/16.
*/
public abstract class StreamingReceiver {
protected final Log LOG = LogFactory.getLog(StreamingReceiver.class);
Thread retrievingThread = null;
protected final RMContext rmContext;
private Runnable retrievingRunnable;
private final String threadName;
protected boolean running = false;
public StreamingReceiver(RMContext rmContext, String threadName) {
this.rmContext = rmContext;
this.threadName = threadName;
}
protected void setRetrievingRunnable(Runnable retrievingRunnable) {
this.retrievingRunnable = retrievingRunnable;
}
public void start() {
if (retrievingThread == null) {
running = true;
LOG.debug("HOP :: Creating " + threadName);
retrievingThread = new Thread(retrievingRunnable);
retrievingThread.setName(threadName);
retrievingThread.start();
} else {
LOG.error("HOP :: " + threadName + " has already started");
}
}
public void stop() {
running =false;
if (retrievingThread != null) {
retrievingThread.interrupt();
}
}
}