///////////////////////////////////////////////////////////////////////
// STANFORD LOGIC GROUP //
// General Game Playing Project //
// //
// Sample Player Implementation //
// //
// (c) 2007. See LICENSE and CONTRIBUTORS. //
///////////////////////////////////////////////////////////////////////
/**
*
*/
package stanfordlogic.jocular;
import java.util.logging.Level;
import java.util.logging.Logger;
import stanfordlogic.game.GameManager;
import stanfordlogic.jocular.game.GenericGamerFactory;
import stanfordlogic.jocular.game.RLGamer;
import stanfordlogic.jocular.network.RequestHandlerFactory;
import stanfordlogic.network.ConnectionManager;
import stanfordlogic.util.CommandLineParser;
import stanfordlogic.util.LogPropertiesLoader;
/**
*
*/
public class Main
{
public final static int DEFAULT_PORT = 4001;
public static void setupLoggerProperties()
{
System.setProperty("java.util.logging.config.class",
"stanfordlogic.util.LogPropertiesLoader");
Logger.getLogger("stanfordlogic").setUseParentHandlers(false);
Logger.getLogger("stanfordlogic").addHandler(
LogPropertiesLoader.getDefaultHandler());
Logger.getLogger("stanfordlogic.game").setLevel(Level.ALL);
Logger.getLogger("stanfordlogic.game.search").setLevel(Level.FINE);
Logger.getLogger("stanfordlogic.prover").setLevel(Level.INFO);
Logger.getLogger("stanfordlogic.prover.unify").setLevel(Level.INFO);
}
/**
* @param args
*/
public static void main(String[] args)
{
CommandLineParser clp = new CommandLineParser();
clp.addFlag("--daemon");
clp.addParam("--port");
clp.setUsage("usage: <--daemon> <--port='portNum'>");
clp.parse(args);
boolean daemonMode = clp.argSpecified("--daemon");
int port = clp.argSpecified("--port") ? clp.getArgAsInt("--port")
: DEFAULT_PORT;
if (!daemonMode)
{
System.out.println(" ########################################");
System.out.println(" # Press Enter to shut the player down. #");
System.out.println(" ########################################");
System.out.println();
}
else
{
System.out.println(" ############################################################");
System.out.println(" # Send \"(KILL abc)\" on port " + port + " to shut the player down. #");
System.out.println(" ############################################################");
System.out.println();
}
setupLoggerProperties();
// TODO: read gamer config from file
GenericGamerFactory factory = new GenericGamerFactory();
factory.setGamerType(RLGamer.class);
GameManager.setGamerFactory(factory);
try
{
ConnectionManager manager = new ConnectionManager(port,new RequestHandlerFactory());
manager.start();
if (!daemonMode)
{
// Wait for input to kill the program
System.in.read();
manager.shutdown();
}
else
{
manager.join();
}
// All done.
System.exit(0);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}