dummy server
This commit is contained in:
@@ -1,11 +1,18 @@
|
||||
package mc.server;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import mc.server.di.DaggerNetworkComponent;
|
||||
import mc.server.di.NetworkComponent;
|
||||
import mc.server.network.Server;
|
||||
|
||||
@Slf4j
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
log.info("hello");
|
||||
|
||||
NetworkComponent networkComponent = DaggerNetworkComponent.create();
|
||||
Server server = networkComponent.getServer();
|
||||
server.start("127.0.0.1", 25565);
|
||||
}
|
||||
}
|
||||
|
||||
10
src/main/java/mc/server/di/NetworkComponent.java
Normal file
10
src/main/java/mc/server/di/NetworkComponent.java
Normal file
@@ -0,0 +1,10 @@
|
||||
package mc.server.di;
|
||||
|
||||
import dagger.Component;
|
||||
import mc.server.network.Server;
|
||||
|
||||
@Component(modules = NetworkModule.class)
|
||||
public interface NetworkComponent {
|
||||
|
||||
Server getServer();
|
||||
}
|
||||
71
src/main/java/mc/server/di/NetworkModule.java
Normal file
71
src/main/java/mc/server/di/NetworkModule.java
Normal file
@@ -0,0 +1,71 @@
|
||||
package mc.server.di;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import io.netty.bootstrap.ServerBootstrap;
|
||||
import io.netty.channel.ChannelHandler;
|
||||
import io.netty.channel.ChannelInitializer;
|
||||
import io.netty.channel.ChannelPipeline;
|
||||
import io.netty.channel.EventLoopGroup;
|
||||
import io.netty.channel.nio.NioEventLoopGroup;
|
||||
import io.netty.channel.socket.SocketChannel;
|
||||
import io.netty.channel.socket.nio.NioServerSocketChannel;
|
||||
import io.netty.handler.logging.LoggingHandler;
|
||||
import mc.server.network.Server;
|
||||
import mc.server.network.netty.NettyServer;
|
||||
|
||||
import javax.inject.Named;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@Module
|
||||
public class NetworkModule {
|
||||
|
||||
@Provides
|
||||
Server provideServer(ServerBootstrap serverBootstrap) {
|
||||
return new NettyServer(serverBootstrap);
|
||||
}
|
||||
|
||||
@Provides
|
||||
ServerBootstrap provideServerBootstrap(
|
||||
@Named("boss-group") EventLoopGroup bossGroup,
|
||||
@Named("worker-group") EventLoopGroup workerGroup,
|
||||
ChannelInitializer<SocketChannel> channelChannelInitializer
|
||||
) {
|
||||
ServerBootstrap bootstrap = new ServerBootstrap();
|
||||
|
||||
bootstrap.group(bossGroup, workerGroup)
|
||||
.channel(NioServerSocketChannel.class)
|
||||
.childHandler(channelChannelInitializer);
|
||||
|
||||
return bootstrap;
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Named("boss-group")
|
||||
EventLoopGroup provideBossGroup() {
|
||||
return new NioEventLoopGroup(1);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Named("worker-group")
|
||||
EventLoopGroup provideWorkerGroup() {
|
||||
return new NioEventLoopGroup();
|
||||
}
|
||||
|
||||
@Provides
|
||||
ChannelInitializer<SocketChannel> provideChannelChannelInitializer(List<ChannelHandler> channelHandlerList) {
|
||||
return new ChannelInitializer<>() {
|
||||
@Override
|
||||
protected void initChannel(SocketChannel socketChannel) {
|
||||
final ChannelPipeline pipeline = socketChannel.pipeline();
|
||||
channelHandlerList.forEach(pipeline::addLast);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Provides
|
||||
List<ChannelHandler> provideChannelHandlerList() {
|
||||
return Collections.singletonList(new LoggingHandler());
|
||||
}
|
||||
}
|
||||
6
src/main/java/mc/server/network/Server.java
Normal file
6
src/main/java/mc/server/network/Server.java
Normal file
@@ -0,0 +1,6 @@
|
||||
package mc.server.network;
|
||||
|
||||
public interface Server {
|
||||
|
||||
void start(String host, int port);
|
||||
}
|
||||
27
src/main/java/mc/server/network/netty/NettyServer.java
Normal file
27
src/main/java/mc/server/network/netty/NettyServer.java
Normal file
@@ -0,0 +1,27 @@
|
||||
package mc.server.network.netty;
|
||||
|
||||
import io.netty.bootstrap.ServerBootstrap;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import mc.server.network.Server;
|
||||
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
public class NettyServer implements Server {
|
||||
|
||||
private final ServerBootstrap serverBootstrap;
|
||||
|
||||
@Override
|
||||
public void start(String host, int port) {
|
||||
log.info("Network starting: {}:{}", host, port);
|
||||
|
||||
try {
|
||||
serverBootstrap.bind(host, port)
|
||||
.sync().channel().closeFuture().sync();
|
||||
} catch (InterruptedException e) {
|
||||
if (log.isTraceEnabled()) {
|
||||
log.trace("{}: {}", e.getClass().getSimpleName(), e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user