From a3eb0eba862886e3252e8ce0aa72b3f152598be7 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Thu, 6 May 2021 13:50:40 +0300 Subject: [PATCH] =?UTF-8?q?=D1=80=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3=20EventBus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mc/protocol/NettyConnectionContext.java | 9 +-------- .../main/java/mc/protocol/NettyServer.java | 8 ++++---- .../mc/protocol/PacketInboundHandler.java | 2 +- .../mc/protocol/api/ConnectionContext.java | 5 +---- .../src/main/java/mc/protocol/api/Server.java | 4 ++-- .../mc/protocol/io/codec/ProtocolDecoder.java | 8 ++++---- .../main/java/mc/protocol/utils/EventBus.java | 4 ++-- .../mc/protocol/utils/SimpleEventBus.java | 6 +++--- .../main/java/mc/server/PacketHandler.java | 19 +++++++++---------- 9 files changed, 27 insertions(+), 38 deletions(-) diff --git a/protocol/src/main/java/mc/protocol/NettyConnectionContext.java b/protocol/src/main/java/mc/protocol/NettyConnectionContext.java index a4cdc65..c231dcf 100644 --- a/protocol/src/main/java/mc/protocol/NettyConnectionContext.java +++ b/protocol/src/main/java/mc/protocol/NettyConnectionContext.java @@ -3,14 +3,12 @@ package mc.protocol; import io.netty.channel.ChannelHandlerContext; import lombok.RequiredArgsConstructor; import mc.protocol.api.ConnectionContext; -import mc.protocol.packets.ClientSidePacket; import mc.protocol.packets.ServerSidePacket; @RequiredArgsConstructor -public class NettyConnectionContext

implements ConnectionContext

{ +public class NettyConnectionContext implements ConnectionContext { private final ChannelHandlerContext ctx; - private final P packet; @Override public State getState() { @@ -22,11 +20,6 @@ public class NettyConnectionContext

implements Conne ctx.channel().attr(NetworkAttributes.STATE).set(state); } - @Override - public P clientPacket() { - return packet; - } - @Override public void send(ServerSidePacket packet) { ctx.write(packet); diff --git a/protocol/src/main/java/mc/protocol/NettyServer.java b/protocol/src/main/java/mc/protocol/NettyServer.java index da14177..d94f053 100644 --- a/protocol/src/main/java/mc/protocol/NettyServer.java +++ b/protocol/src/main/java/mc/protocol/NettyServer.java @@ -31,8 +31,8 @@ public class NettyServer implements Server { private final PacketPool packetPool; private final EventBus eventBus; - private Consumer> consumerNewConnection; - private Consumer> consumerDisconnect; + private Consumer consumerNewConnection; + private Consumer consumerDisconnect; @Override public void bind(String host, int port) { @@ -48,12 +48,12 @@ public class NettyServer implements Server { } @Override - public void onNewConnect(Consumer> consumer) { + public void onNewConnect(Consumer consumer) { this.consumerNewConnection = consumer; } @Override - public void onDisonnect(Consumer> consumer) { + public void onDisonnect(Consumer consumer) { this.consumerDisconnect = consumer; } diff --git a/protocol/src/main/java/mc/protocol/PacketInboundHandler.java b/protocol/src/main/java/mc/protocol/PacketInboundHandler.java index fb5afad..20feab1 100644 --- a/protocol/src/main/java/mc/protocol/PacketInboundHandler.java +++ b/protocol/src/main/java/mc/protocol/PacketInboundHandler.java @@ -16,7 +16,7 @@ public class PacketInboundHandler extends SimpleChannelInboundHandler(ctx, packet)); + eventBus.emit(state, new NettyConnectionContext(ctx), packet); poolPackets.returnObject(packet); } diff --git a/protocol/src/main/java/mc/protocol/api/ConnectionContext.java b/protocol/src/main/java/mc/protocol/api/ConnectionContext.java index b2ed00e..5cf5c3d 100644 --- a/protocol/src/main/java/mc/protocol/api/ConnectionContext.java +++ b/protocol/src/main/java/mc/protocol/api/ConnectionContext.java @@ -1,16 +1,13 @@ package mc.protocol.api; import mc.protocol.State; -import mc.protocol.packets.ClientSidePacket; import mc.protocol.packets.ServerSidePacket; -public interface ConnectionContext

{ +public interface ConnectionContext { State getState(); void setState(State state); - P clientPacket(); - void send(ServerSidePacket packet); void sendNow(ServerSidePacket packet); void flushSending(); diff --git a/protocol/src/main/java/mc/protocol/api/Server.java b/protocol/src/main/java/mc/protocol/api/Server.java index 2e4af87..e0b8777 100644 --- a/protocol/src/main/java/mc/protocol/api/Server.java +++ b/protocol/src/main/java/mc/protocol/api/Server.java @@ -10,8 +10,8 @@ public interface Server { void bind(String host, int port); - void onNewConnect(Consumer> consumer); - void onDisonnect(Consumer> consumer); + void onNewConnect(Consumer consumer); + void onDisonnect(Consumer consumer);

void listenPacket(State state, Class

packetClass, EventBus.EventHandler

eventHandler); } diff --git a/protocol/src/main/java/mc/protocol/io/codec/ProtocolDecoder.java b/protocol/src/main/java/mc/protocol/io/codec/ProtocolDecoder.java index af11952..ec8d9a3 100644 --- a/protocol/src/main/java/mc/protocol/io/codec/ProtocolDecoder.java +++ b/protocol/src/main/java/mc/protocol/io/codec/ProtocolDecoder.java @@ -25,18 +25,18 @@ public class ProtocolDecoder extends ByteToMessageDecoder { private final boolean readUnknownPackets; private final PacketPool poolPackets; - private final Consumer> consumerNewConnection; - private final Consumer> consumerDisconnect; + private final Consumer consumerNewConnection; + private final Consumer consumerDisconnect; @Override public void channelActive(@Nonnull ChannelHandlerContext ctx) throws Exception { - consumerNewConnection.accept(new NettyConnectionContext<>(ctx, null)); + consumerNewConnection.accept(new NettyConnectionContext(ctx)); super.channelActive(ctx); } @Override public void channelInactive(@Nonnull ChannelHandlerContext ctx) throws Exception { - consumerDisconnect.accept(new NettyConnectionContext<>(ctx, null)); + consumerDisconnect.accept(new NettyConnectionContext(ctx)); super.channelInactive(ctx); } diff --git a/protocol/src/main/java/mc/protocol/utils/EventBus.java b/protocol/src/main/java/mc/protocol/utils/EventBus.java index 0d7ad36..1409e8e 100644 --- a/protocol/src/main/java/mc/protocol/utils/EventBus.java +++ b/protocol/src/main/java/mc/protocol/utils/EventBus.java @@ -8,10 +8,10 @@ public interface EventBus {

void subscribe(State state, Class

packetClass, EventHandler

eventHandler); -

void emit(State state, ConnectionContext

channelContext); +

void emit(State state, ConnectionContext channelContext, P packet); @FunctionalInterface interface EventHandler

{ - void handle(ConnectionContext

channelContext); + void handle(ConnectionContext channelContext, P packet); } } diff --git a/protocol/src/main/java/mc/protocol/utils/SimpleEventBus.java b/protocol/src/main/java/mc/protocol/utils/SimpleEventBus.java index d79649d..4061e58 100644 --- a/protocol/src/main/java/mc/protocol/utils/SimpleEventBus.java +++ b/protocol/src/main/java/mc/protocol/utils/SimpleEventBus.java @@ -15,11 +15,11 @@ public class SimpleEventBus implements EventBus { } @Override - public

void emit(State state, ConnectionContext

channelContext) { - EventHandler eventHandler = table.getColumnAndRow(state, channelContext.clientPacket().getClass()); + public

void emit(State state, ConnectionContext channelContext, P packet) { + EventHandler eventHandler = table.getColumnAndRow(state, packet.getClass()); if (eventHandler != null) { - eventHandler.handle(channelContext); + eventHandler.handle(channelContext, packet); } } } diff --git a/server/src/main/java/mc/server/PacketHandler.java b/server/src/main/java/mc/server/PacketHandler.java index f4efb2d..bf35af9 100644 --- a/server/src/main/java/mc/server/PacketHandler.java +++ b/server/src/main/java/mc/server/PacketHandler.java @@ -34,20 +34,21 @@ public class PacketHandler { private final Random random = new Random(System.currentTimeMillis()); private final Config config; - public void onHandshake(ConnectionContext context) { - context.setState(context.clientPacket().getNextState()); + public void onHandshake(ConnectionContext context, HandshakePacket packet) { + context.setState(packet.getNextState()); } - public void onKeepAlive(ConnectionContext context) { - context.sendNow(context.clientPacket()); + public void onKeepAlive(ConnectionContext context, PingPacket packet) { + context.sendNow(packet); context.disconnect(); } - public void onKeepAlivePlay(ConnectionContext context) { - context.sendNow(context.clientPacket()); + public void onKeepAlivePlay(ConnectionContext context, PingPacket packet) { + context.sendNow(packet); } - public void onServerStatus(ConnectionContext context) { + @SuppressWarnings("unused") + public void onServerStatus(ConnectionContext context, StatusServerRequestPacket packet) { ServerInfo serverInfo = new ServerInfo(); serverInfo.version().name(ProtocolConstant.PROTOCOL_NAME); serverInfo.version().protocol(ProtocolConstant.PROTOCOL_NUMBER); @@ -66,9 +67,7 @@ public class PacketHandler { context.sendNow(response); } - public void onLoginStart(ConnectionContext context) { - LoginStartPacket loginStartPacket = context.clientPacket(); - + public void onLoginStart(ConnectionContext context, LoginStartPacket loginStartPacket) { var loginSuccessPacket = new LoginSuccessPacket(); loginSuccessPacket.setUuid(UUID.randomUUID()); loginSuccessPacket.setName(loginStartPacket.getName());