Files
Velocity/src/main/java/com/velocitypowered/proxy/VelocityServer.java
Andrew Steinborn 1d2110f2aa A bit more
2018-07-27 20:24:57 -04:00

79 lines
2.4 KiB
Java

package com.velocitypowered.proxy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.velocitypowered.network.ConnectionManager;
import com.velocitypowered.proxy.config.VelocityConfiguration;
import com.velocitypowered.proxy.connection.http.NettyHttpClient;
import com.velocitypowered.proxy.util.EncryptionUtils;
import io.netty.bootstrap.Bootstrap;
import net.kyori.text.Component;
import net.kyori.text.serializer.GsonComponentSerializer;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.file.Paths;
import java.security.KeyPair;
public class VelocityServer {
private static final Logger logger = LogManager.getLogger(VelocityServer.class);
private static final VelocityServer INSTANCE = new VelocityServer();
public static final Gson GSON = new GsonBuilder()
.registerTypeHierarchyAdapter(Component.class, new GsonComponentSerializer())
.create();
private final ConnectionManager cm = new ConnectionManager();
private VelocityConfiguration configuration;
private NettyHttpClient httpClient;
private KeyPair serverKeyPair;
private VelocityServer() {
}
public static VelocityServer getServer() {
return INSTANCE;
}
public KeyPair getServerKeyPair() {
return serverKeyPair;
}
public VelocityConfiguration getConfiguration() {
return configuration;
}
public void start() {
// Create a key pair
logger.info("Booting up Velocity...");
try {
configuration = VelocityConfiguration.read(Paths.get("velocity.toml"));
if (!configuration.validate()) {
logger.error("Your configuration is invalid. Velocity will refuse to start up until the errors are resolved.");
System.exit(1);
}
} catch (IOException e) {
logger.error("Unable to load your velocity.toml. The server will shut down.", e);
System.exit(1);
}
serverKeyPair = EncryptionUtils.createRsaKeyPair(1024);
httpClient = new NettyHttpClient(this);
this.cm.bind(configuration.getBind());
}
public Bootstrap initializeGenericBootstrap() {
return this.cm.createWorker();
}
public void shutdown() {
this.cm.shutdown();
}
public NettyHttpClient getHttpClient() {
return httpClient;
}
}