package net.johnewart.gearman.server;
import net.johnewart.gearman.server.config.DefaultServerConfiguration;
import net.johnewart.gearman.server.config.GearmanServerConfiguration;
import net.johnewart.gearman.server.net.ServerListener;
import net.johnewart.gearman.server.web.WebListener;
import org.slf4j.LoggerFactory;
import org.yaml.snakeyaml.Yaml;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
public class GearmanDaemon {
private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(GearmanDaemon.class);
public static void main(String... args)
{
final String configFile;
if (args.length != 1) {
configFile = "config.yml";
} else {
configFile = args[0];
}
final GearmanServerConfiguration serverConfiguration = loadFromConfigOrGenerateDefaultConfig(configFile);
final ServerListener serverListener = new ServerListener(serverConfiguration);
final WebListener webListener = new WebListener(serverConfiguration);
try {
webListener.start();
serverListener.start();
} catch (Exception e) {
e.printStackTrace();
}
}
private static GearmanServerConfiguration loadFromConfigOrGenerateDefaultConfig(final String configFile) {
GearmanServerConfiguration serverConfiguration = null;
try (InputStream in = Files.newInputStream(Paths.get(configFile))) {
Yaml yaml = new Yaml();
serverConfiguration
= yaml.loadAs(in, GearmanServerConfiguration.class);
System.out.println(serverConfiguration.toString());
LOG.info("Starting Gearman Server with settings from " + configFile + "...");
} catch (Exception e) {
LOG.error("Can't load " + configFile + ": ", e);
}
if (serverConfiguration == null) {
LOG.info("Starting Gearman Server with default settings ...");
serverConfiguration = new DefaultServerConfiguration();
}
return serverConfiguration;
}
}