package org.cryptocoinpartners.bin;
import java.util.concurrent.Semaphore;
import javax.inject.Inject;
import org.apache.commons.configuration.Configuration;
import org.cryptocoinpartners.util.Injector;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.beust.jcommander.Parameters;
/**
* Each subclass of RunMode must be annotated with the JCommander @Parameters tag. Main will
* create an instance of the RunMode using injection, and JCommander will populate any fields annotated with @Parameter.
*
* @author Tim Olson
* @see Parameters
*/
@Parameters(commandNames = "example", commandDescription = "This is an example of how to annotate your subclasses")
public abstract class RunMode implements Runnable {
public abstract void run(Semaphore semaphore);
// @Parameter(names = {"-x","-X","-example"}, description = "this is an example")
// public boolean exampleSwitch;
// public void run() {
// System.err.println("<unimplemented>");
// System.exit(404);
// }
protected static Logger log = LoggerFactory.getLogger("org.cryptocoinpartners.runMode");
@Inject
protected Injector injector;
@Inject
protected Configuration config;
}