Skip to content

Commit 321535c

Browse files
authored
Cleaned up packet capture code (Follow up to #2) (#3)
1 parent df69768 commit 321535c

File tree

4 files changed

+31
-90
lines changed

4 files changed

+31
-90
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.cloudburstmc.netty.handler.codec.raknet.client;
2+
3+
import io.netty.channel.ChannelHandlerContext;
4+
import io.netty.channel.ChannelOutboundHandlerAdapter;
5+
import io.netty.channel.ChannelPromise;
6+
import io.netty.util.concurrent.Promise;
7+
8+
public class RakClientFirstPacketHandler extends ChannelOutboundHandlerAdapter {
9+
public static final String NAME = "rak-client-first-packet-handler";
10+
11+
private final Promise<Object> packetPromise;
12+
13+
public RakClientFirstPacketHandler(Promise<Object> packetPromise) {
14+
this.packetPromise = packetPromise;
15+
}
16+
17+
@Override
18+
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
19+
ctx.channel().pipeline().remove(RakClientFirstPacketHandler.NAME);
20+
this.packetPromise.setSuccess(msg);
21+
}
22+
}

transport-raknet/src/main/java/org/cloudburstmc/netty/handler/codec/raknet/client/RakClientNetworkSettingsHandler.java

Lines changed: 0 additions & 80 deletions
This file was deleted.

transport-raknet/src/main/java/org/cloudburstmc/netty/handler/codec/raknet/client/RakClientOfflineHandlerCompatible.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import org.cloudburstmc.netty.channel.raknet.RakChannel;
99
import org.cloudburstmc.netty.channel.raknet.RakOfflineState;
1010
import org.cloudburstmc.netty.channel.raknet.config.RakChannelOption;
11-
import org.cloudburstmc.netty.channel.raknet.packet.RakMessage;
1211
import org.cloudburstmc.netty.handler.codec.raknet.common.*;
1312
import org.cloudburstmc.netty.util.RakUtils;
1413

@@ -31,18 +30,18 @@ void onRetryAttempt(Channel channel) {
3130
@Override
3231
void onSuccess(ChannelHandlerContext ctx) {
3332
RakSessionCodec sessionCodec = new RakSessionCodecCompatible(this.rakChannel());
34-
Promise<RakMessage> networkSettingsPacketPromise = ctx.executor().newPromise();
33+
Promise<Object> packetPromise = ctx.executor().newPromise();
3534
ctx.pipeline().addAfter(NAME, RakDatagramCodec.NAME, new RakDatagramCodec());
3635
ctx.pipeline().addAfter(RakDatagramCodec.NAME, RakAcknowledgeHandler.NAME, new RakAcknowledgeHandler(sessionCodec));
3736
ctx.pipeline().addAfter(RakAcknowledgeHandler.NAME, RakSessionCodec.NAME, sessionCodec);
38-
// Ensure new incoming connection batches with request network settings game packet
39-
ctx.pipeline().addAfter(RakSessionCodec.NAME, RakClientNetworkSettingsHandler.NAME, new RakClientNetworkSettingsHandler(this.rakChannel(), networkSettingsPacketPromise));
37+
// Ensure new incoming connection batches with first game packet (request network settings)
38+
ctx.pipeline().addAfter(RakSessionCodec.NAME, RakClientFirstPacketHandler.NAME, new RakClientFirstPacketHandler(packetPromise));
4039
ctx.pipeline().addAfter(RakSessionCodec.NAME, ConnectedPingHandler.NAME, new ConnectedPingHandler());
4140
ctx.pipeline().addAfter(ConnectedPingHandler.NAME, ConnectedPongHandler.NAME, new ConnectedPongHandler(sessionCodec));
4241
ctx.pipeline().addAfter(ConnectedPongHandler.NAME, DisconnectNotificationHandler.NAME, DisconnectNotificationHandler.INSTANCE);
4342
// Replicate server behavior, and transform unhandled encapsulated packets to rakMessage
4443
ctx.pipeline().addAfter(DisconnectNotificationHandler.NAME, EncapsulatedToMessageHandler.NAME, EncapsulatedToMessageHandler.INSTANCE);
45-
ctx.pipeline().addAfter(DisconnectNotificationHandler.NAME, RakClientOnlineInitialHandlerCompatible.NAME, new RakClientOnlineInitialHandlerCompatible(this.rakChannel(), this.successPromise(), networkSettingsPacketPromise));
44+
ctx.pipeline().addAfter(DisconnectNotificationHandler.NAME, RakClientOnlineInitialHandlerCompatible.NAME, new RakClientOnlineInitialHandlerCompatible(this.rakChannel(), this.successPromise(), packetPromise));
4645
}
4746

4847
@Override

transport-raknet/src/main/java/org/cloudburstmc/netty/handler/codec/raknet/client/RakClientOnlineInitialHandlerCompatible.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,20 @@
1616
public class RakClientOnlineInitialHandlerCompatible extends RakClientOnlineInitialHandler {
1717
public static final String NAME = "rak-client-online-initial-handler";
1818

19-
private final Promise<RakMessage> networkSettingsPacketPromise;
19+
private final Promise<Object> packetPromise;
2020
private long pingTime = 0;
2121

22-
public RakClientOnlineInitialHandlerCompatible(RakChannel rakChannel, ChannelPromise successPromise, Promise<RakMessage> networkSettingsPacketPromise) {
22+
public RakClientOnlineInitialHandlerCompatible(RakChannel rakChannel, ChannelPromise successPromise, Promise<Object> packetPromise) {
2323
super(rakChannel, successPromise);
24-
this.networkSettingsPacketPromise = networkSettingsPacketPromise;
24+
this.packetPromise = packetPromise;
2525
}
2626

2727
@Override
2828
void onSuccess(ChannelHandlerContext ctx) {
2929
super.onSuccess(ctx);
3030

31-
// Wait for the RequestNetworkSettings packet before sending the final batch
32-
this.networkSettingsPacketPromise.addListener(future -> {
31+
// Wait for the first game packet (request network settings) before sending the final batch
32+
this.packetPromise.addListener(future -> {
3333
ByteBuf incomingBuffer = ctx.alloc().ioBuffer();
3434
this.writeIncomingConnection(ctx, incomingBuffer, pingTime);
3535
ctx.write(new RakMessage(incomingBuffer, RakReliability.RELIABLE_ORDERED, RakPriority.NORMAL));

0 commit comments

Comments
 (0)