diff --git a/game/src/main/java/org/apollo/game/release/r317/GroupedRegionUpdateMessageEncoder.java b/game/src/main/java/org/apollo/game/release/r317/GroupedRegionUpdateMessageEncoder.java index 80fa508f..cd6703b7 100644 --- a/game/src/main/java/org/apollo/game/release/r317/GroupedRegionUpdateMessageEncoder.java +++ b/game/src/main/java/org/apollo/game/release/r317/GroupedRegionUpdateMessageEncoder.java @@ -47,7 +47,7 @@ public final class GroupedRegionUpdateMessageEncoder extends MessageEncoder attribute = channel.attr(ApolloHandler.SESSION_KEY); - Session session = attribute.get(); + Channel channel = ctx.channel(); + Attribute attribute = channel.attr(ApolloHandler.SESSION_KEY); + Session session = attribute.get(); - if (message instanceof HttpRequest || message instanceof JagGrabRequest) { - session = new UpdateSession(channel, serverContext); + if (message instanceof HttpRequest || message instanceof JagGrabRequest) { + session = new UpdateSession(channel, serverContext); + } + + if (session != null) { + session.messageReceived(message); + return; + } + + // TODO: Perhaps let HandshakeMessage implement Message to remove this explicit check + if (message instanceof HandshakeMessage) { + HandshakeMessage handshakeMessage = (HandshakeMessage) message; + + switch (handshakeMessage.getServiceId()) { + case HandshakeConstants.SERVICE_GAME: + attribute.set(new LoginSession(channel, serverContext)); + break; + + case HandshakeConstants.SERVICE_UPDATE: + attribute.set(new UpdateSession(channel, serverContext)); + break; } - - if (session != null) { - session.messageReceived(message); - return; - } - - // TODO: Perhaps let HandshakeMessage implement Message to remove this explicit check - if (message instanceof HandshakeMessage) { - HandshakeMessage handshakeMessage = (HandshakeMessage) message; - - switch (handshakeMessage.getServiceId()) { - case HandshakeConstants.SERVICE_GAME: - attribute.set(new LoginSession(channel, serverContext)); - break; - - case HandshakeConstants.SERVICE_UPDATE: - attribute.set(new UpdateSession(channel, serverContext)); - break; - } - } - - } finally { - ReferenceCountUtil.release(message); } } diff --git a/net/src/main/java/org/apollo/net/codec/game/GamePacket.java b/net/src/main/java/org/apollo/net/codec/game/GamePacket.java index 0f51e9cb..5c082f82 100644 --- a/net/src/main/java/org/apollo/net/codec/game/GamePacket.java +++ b/net/src/main/java/org/apollo/net/codec/game/GamePacket.java @@ -2,6 +2,7 @@ package org.apollo.net.codec.game; import io.netty.buffer.ByteBuf; +import io.netty.buffer.DefaultByteBufHolder; import org.apollo.net.meta.PacketType; /** @@ -9,7 +10,7 @@ import org.apollo.net.meta.PacketType; * * @author Graham */ -public final class GamePacket { +public final class GamePacket extends DefaultByteBufHolder { /** * The length. @@ -21,11 +22,6 @@ public final class GamePacket { */ private final int opcode; - /** - * The payload. - */ - private final ByteBuf payload; - /** * The packet type. */ @@ -39,10 +35,10 @@ public final class GamePacket { * @param payload The payload. */ public GamePacket(int opcode, PacketType type, ByteBuf payload) { + super(payload); this.opcode = opcode; this.type = type; length = payload.readableBytes(); - this.payload = payload; } /** @@ -63,15 +59,6 @@ public final class GamePacket { return opcode; } - /** - * Gets the payload. - * - * @return The payload. - */ - public ByteBuf getPayload() { - return payload; - } - /** * Gets the packet type. * diff --git a/net/src/main/java/org/apollo/net/codec/game/GamePacketEncoder.java b/net/src/main/java/org/apollo/net/codec/game/GamePacketEncoder.java index 0a9bfa1e..a5fda4fa 100644 --- a/net/src/main/java/org/apollo/net/codec/game/GamePacketEncoder.java +++ b/net/src/main/java/org/apollo/net/codec/game/GamePacketEncoder.java @@ -44,7 +44,7 @@ public final class GamePacketEncoder extends MessageToByteEncoder { } else if (type == PacketType.VARIABLE_SHORT) { out.writeShort(payloadLength); } - out.writeBytes(packet.getPayload()); + out.writeBytes(packet.content()); } } \ No newline at end of file diff --git a/net/src/main/java/org/apollo/net/codec/game/GamePacketReader.java b/net/src/main/java/org/apollo/net/codec/game/GamePacketReader.java index 00e4ca9e..0f8bae99 100644 --- a/net/src/main/java/org/apollo/net/codec/game/GamePacketReader.java +++ b/net/src/main/java/org/apollo/net/codec/game/GamePacketReader.java @@ -34,7 +34,7 @@ public final class GamePacketReader { * @param packet The packet. */ public GamePacketReader(GamePacket packet) { - buffer = packet.getPayload(); + buffer = packet.content(); } /**