package ragefist.core.distribution; import com.juniform.JUniform; /* * 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 */ /** * * @author acherkashin */ public class DistributedServer { private final int _id; private final SelectionPolicy _selectionPolicy; private final String _rpcHost; private final int _rpcPort; private final String _rpcPacketFormat; private final String _httpClientHost; private final int _httpClientPort; private final String _httpClientPacketFormat; private final String _clientHost; private final int _clientPort; private final String _clientPacketFormat; private final String _consoleHost; private final int _consolePort; private final int _environmentCount; private final String _environmentLuaMainFile; private final String _environmentLuaConnectorFile; public static class DistributedServerBuilder { // @required public int id; public SelectionPolicy selectionPolicy; public String rpcHost; public int rpcPort; public String rpcPacketFormat; public String clientHost; public int clientPort; public String clientPacketFormat; public String httpClientHost; public int httpClientPort; public String httpClientPacketFormat; public String consoleHost; public int consolePort; public int environmentCount; public String environmentLuaMainFile; // @optional public String environmentLuaConnectorFile; protected void _checkBuildThrowExceptions() throws IllegalArgumentException { if (id < 0) { throw new IllegalArgumentException("DistributedServer.id < 0"); } if (environmentCount <= 0) { throw new IllegalArgumentException("DistributedServer.environmentCount <= 0"); } if (selectionPolicy == null) { throw new IllegalArgumentException("DistributedServer.selectionPolicy == null"); } if (rpcHost == null || rpcHost.isEmpty()) { throw new IllegalArgumentException("DistributedServer.rpcHost is null or empty"); } if (rpcPort <= 0) { throw new IllegalArgumentException("DistributedServer.rpcPort <= 0"); } if (clientHost == null || clientHost.isEmpty()) { throw new IllegalArgumentException("DistributedServer.clientHost is null or empty"); } if (clientPort <= 0) { throw new IllegalArgumentException("DistributedServer.clientPort <= 0"); } if (consoleHost == null || consoleHost.isEmpty()) { throw new IllegalArgumentException("DistributedServer.consoleHost is null or empty"); } if (consolePort <= 0) { throw new IllegalArgumentException("DistributedServer.consolePort <= 0"); } if (environmentLuaMainFile == null || environmentLuaMainFile.isEmpty()) { throw new IllegalArgumentException("DistributedServer.environmentLuaMainFile is null or empty"); } if (rpcPacketFormat == null || rpcPacketFormat.isEmpty() || !JUniform.isFormatSupported(rpcPacketFormat)) { throw new IllegalArgumentException("DistributedServer.rpcPacketFormat is null or empty or not supported"); } if (clientPacketFormat == null || clientPacketFormat.isEmpty() || !JUniform.isFormatSupported(clientPacketFormat)) { throw new IllegalArgumentException("DistributedServer.clientPacketFormat is null or empty or not supported"); } } public DistributedServer build() throws IllegalArgumentException { _checkBuildThrowExceptions(); return new DistributedServer(this); } } protected DistributedServer(DistributedServerBuilder builder) { _id = builder.id; _environmentCount = builder.environmentCount; _selectionPolicy = builder.selectionPolicy; _rpcHost = builder.rpcHost; _rpcPort = builder.rpcPort; _rpcPacketFormat = builder.rpcPacketFormat; _clientHost = builder.clientHost; _clientPort = builder.clientPort; _clientPacketFormat = builder.clientPacketFormat; _httpClientHost = builder.httpClientHost; _httpClientPort = builder.httpClientPort; _httpClientPacketFormat = builder.httpClientPacketFormat; _consoleHost = builder.consoleHost; _consolePort = builder.consolePort; _environmentLuaConnectorFile = builder.environmentLuaConnectorFile; _environmentLuaMainFile = builder.environmentLuaMainFile; } // ---------------------------------------------------------------------- // // PUBLIC // ---------------------------------------------------------------------- // public final int getId() { return _id; } public final int getEnvironmentCount() { return _environmentCount; } public final SelectionPolicy getSelectionPolicy() { return _selectionPolicy; } public final String getRPCHost() { return _rpcHost; } public final int getRPCPort() { return _rpcPort; } public final String getRPCPacketFormat() { return _rpcPacketFormat; } public final String getClientHost() { return _clientHost; } public final int getClientPort() { return _clientPort; } public final String getClientPacketFormat() { return _clientPacketFormat; } public final String getConsoleHost() { return _consoleHost; } public final int getConsolePort() { return _consolePort; } public final String getHTTPClientHost() { return _httpClientHost; } public final int getHTTPClientPort() { return _httpClientPort; } public final String getHTTPClientPacketFormat() { return _httpClientPacketFormat; } public final String getEnvironmentLuaConnectorFile() { return _environmentLuaConnectorFile; } public final String getEnvironmentLuaMainFile() { return _environmentLuaMainFile; } }