/*
* Created by Andrey Cherkashin (acherkashin)
* http://acherkashin.me
*
* License
* Copyright (c) 2015 Andrey Cherkashin
* The project released under the MIT license: http://opensource.org/licenses/MIT
*/
package ragefist;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import ragefist.core.distribution.DistributedServerController;
import ragefist.core.distribution.DistributedServerController.DistributedServerControllerBuilder;
import ragefist.extension.Extension;
import ragefist.extension.ExtensionLoader;
import ragefist.packets.PacketHandlerClient;
import ragefist.packets.PacketHandlerConsole;
import ragefist.packets.PacketHandlerRPC;
/**
*
* @author acherkashin
*/
public class Main
{
private static DistributedServerController _controller;
// ---------------------------------------------------------------------- //
// PUBLIC
// ---------------------------------------------------------------------- //
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// ---------------------------------------------------------------------- //
// LOAD CONFIGURATION
// ---------------------------------------------------------------------- //
Config.load();
// ---------------------------------------------------------------------- //
// LOAD SERVER
// ---------------------------------------------------------------------- //
DistributedServerControllerBuilder controllerBuilder = new DistributedServerControllerBuilder();
controllerBuilder.serverGroupMap = Config.ServerGroups;
controllerBuilder.controlledServer = Config.CurrentServer;
controllerBuilder.controlledServerGroup = Config.CurrentServerGroup;
controllerBuilder.clientPacketHandlerClass = PacketHandlerClient.class;
controllerBuilder.rpcPacketHandlerClass = PacketHandlerRPC.class;
controllerBuilder.consolePacketHandlerClass = PacketHandlerConsole.class;
controllerBuilder.disableCrossEnvironmentInteraction = Config.DisableCrossEnvironmentInteraction;
controllerBuilder.isTestServer = Config.IsTestServer;
try {
_controller = controllerBuilder.build();
} catch(IllegalArgumentException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, "Failed to create DistributedServerController", ex);
}
// ---------------------------------------------------------------------- //
// LOAD EXTENSIONS
// ---------------------------------------------------------------------- //
for(String extensionName : Config.Extensions) {
Extension extension = ExtensionLoader.load(extensionName);
if (extension == null) {
Logger.getLogger(Main.class.getName()).log(Level.WARNING, "Failed to load extension "+extensionName);
continue;
}
_controller.addExtension(extension);
Logger.getLogger(Main.class.getName()).log(Level.FINE, "Extension "+extensionName+" is loaded");
}
// START
_controller.start();
}
}