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; }
}