forked from Cookies_Github_mirror/AquaDX
72 lines
2.8 KiB
Java
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();
|
|
}
|
|
}
|
|
}
|