Files
AquaDX/src/main/java/icu/samnyan/aqua/sega/aimedb/AimeDbServer.java
2020-03-30 17:23:00 +09:00

72 lines
2.8 KiB
Java

package icu.samnyan.aqua.sega.aimedb;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelOption;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.handler.logging.LogLevel;
import io.netty.handler.logging.LoggingHandler;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Component
public class AimeDbServer {
private static final Logger logger = LoggerFactory.getLogger(AimeDbServer.class);
private final AimeDbServerInitializer aimeDbServerInitializer;
private final String address;
private final int port;
private final boolean enableAimeDb;
public AimeDbServer(AimeDbServerInitializer aimeDbServerInitializer,
@Value("${aimedb.server.address}") String address,
@Value("${aimedb.server.port}") int port,
@Value("${aimedb.server.enable}") boolean enableAimeDb) {
this.aimeDbServerInitializer = aimeDbServerInitializer;
this.address = address;
this.port = port;
this.enableAimeDb = enableAimeDb;
}
public void start() throws Exception {
if (enableAimeDb) {
ServerBootstrap bootstrap = new ServerBootstrap();
EventLoopGroup boss = new NioEventLoopGroup();
EventLoopGroup work = new NioEventLoopGroup();
bootstrap.group(boss, work)
.handler(new LoggingHandler(LogLevel.DEBUG))
.channel(NioServerSocketChannel.class)
.childHandler(aimeDbServerInitializer)
.option(ChannelOption.SO_BACKLOG, 128);
InetSocketAddress socket;
if(StringUtils.isNotBlank(this.address)) {
try {
socket = new InetSocketAddress(InetAddress.getByName(this.address), this.port);
} catch (UnknownHostException e) {
logger.error("UnknownHostException, please check you have set a correct aimedb.server.address.");
socket = new InetSocketAddress(this.port);
}
} else {
socket = new InetSocketAddress(this.port);
}
ChannelFuture f = bootstrap.bind(socket).sync();
logger.info("Aime DB start up on " + socket.toString());
f.channel().closeFuture();
}
}
}