dummy server
This commit is contained in:
@@ -38,6 +38,11 @@ dependencies {
|
|||||||
|
|
||||||
implementation libs.dagger2.implementation
|
implementation libs.dagger2.implementation
|
||||||
annotationProcessor libs.dagger2.annotationProcessor
|
annotationProcessor libs.dagger2.annotationProcessor
|
||||||
|
|
||||||
|
implementation platform('io.projectreactor:reactor-bom:2020.0.6')
|
||||||
|
implementation 'io.projectreactor:reactor-core'
|
||||||
|
|
||||||
|
implementation 'io.netty:netty-all:4.1.22.Final'
|
||||||
}
|
}
|
||||||
|
|
||||||
application.mainClassName = 'mc.server.Main'
|
application.mainClassName = 'mc.server.Main'
|
||||||
@@ -1,11 +1,18 @@
|
|||||||
package mc.server;
|
package mc.server;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import mc.server.di.DaggerNetworkComponent;
|
||||||
|
import mc.server.di.NetworkComponent;
|
||||||
|
import mc.server.network.Server;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class Main {
|
public class Main {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
log.info("hello");
|
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