/* ************************************************************************
#
# DivConq
#
# http://divconq.com/
#
# Copyright:
# Copyright 2014 eTimeline, LLC. All rights reserved.
#
# License:
# See the license.txt file in the project's top-level directory for details.
#
# Authors:
# * Andy White
#
************************************************************************ */
package divconq.hub;
import java.util.Scanner;
import org.apache.commons.daemon.DaemonContext;
import org.apache.commons.daemon.DaemonInitException;
import divconq.lang.op.OperationContext;
import divconq.lang.op.OperationResult;
import divconq.log.DebugLevel;
import divconq.log.Logger;
public class Daemon implements org.apache.commons.daemon.Daemon {
protected DaemonContext procCtx = null;
public static void main(String[] args) {
try {
Daemon.startService(args);
try (Scanner scan = new Scanner(System.in)) {
System.out.println("Press enter to end Daemon");
scan.nextLine();
}
}
catch (Exception x) {
}
Daemon.stopService(args);
}
public static void startService(String[] args) {
String deployment = (args.length > 0) ? args[0] : null;
String squadid = (args.length > 1) ? args[1] : null;
String hubid = (args.length > 2) ? args[2] : null;
OperationContext.useHubContext();
HubResources resources = new HubResources(deployment, squadid, null, hubid);
resources.setDebugLevel(DebugLevel.Info);
OperationResult or = resources.init();
if (or.hasErrors()) {
Logger.error("Unable to continue, hub resources not properly configured");
return;
}
or = Hub.instance.start(resources);
if (or.hasErrors()) {
Logger.error("Unable to continue, hub not properly started, please see logs");
Hub.instance.stop();
System.exit(1);
return;
}
Logger.info("Daemon started");
}
public static void stopService(String[] args) {
OperationContext.useHubContext();
Logger.info("Daemon stopping");
Hub.instance.stop();
}
@Override
public void start() throws Exception {
Daemon.startService(this.procCtx.getArguments());
}
@Override
public void stop() throws Exception {
Daemon.stopService(this.procCtx.getArguments());
}
@Override
public void destroy() {
this.procCtx = null;
}
@Override
public void init(DaemonContext ctx) throws DaemonInitException, Exception {
this.procCtx = ctx;
}
}