From 41acf32cb8ebe969a1e09e1066f238baa69a6233 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Fri, 9 Jul 2021 12:26:15 +0300 Subject: [PATCH 1/4] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=BE=D1=81?= =?UTF-8?q?=20pool=20=D1=84=D0=B0=D0=B1=D1=80=D0=B8=D0=BA=20=D0=B2=20?= =?UTF-8?q?=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8C=20utils?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protocol/build.gradle | 1 - protocol/src/main/java/mc/protocol/buffer/NetByteBuf.java | 3 +-- .../src/main/java/mc/protocol/packets/ClientSidePacket.java | 2 +- .../java/mc/protocol/packets/play/server/ChunkDataPacket.java | 2 +- .../src/main/java/mc/protocol/pool/ProtocolObjectPool.java | 1 + utils/build.gradle | 4 ++++ .../src/main/java/mc/utils}/pool/MultiObjectPool.java | 2 +- .../src/main/java/mc/utils}/pool/ObjectPool.java | 2 +- .../src/main/java/mc/utils}/pool/Passivable.java | 2 +- .../main/java/mc/utils}/pool/PassivableMultiObjectPool.java | 2 +- .../src/main/java/mc/utils}/pool/PassivableObjectPool.java | 2 +- .../java/mc/utils}/pool/PassivablePooledObjectFactory.java | 2 +- .../src/main/java/mc/utils}/pool/SimpleObjectPool.java | 2 +- .../main/java/mc/utils}/pool/SimplePooledObjectFactory.java | 2 +- 14 files changed, 16 insertions(+), 13 deletions(-) rename {protocol/src/main/java/mc/protocol => utils/src/main/java/mc/utils}/pool/MultiObjectPool.java (83%) rename {protocol/src/main/java/mc/protocol => utils/src/main/java/mc/utils}/pool/ObjectPool.java (76%) rename {protocol/src/main/java/mc/protocol => utils/src/main/java/mc/utils}/pool/Passivable.java (67%) rename {protocol/src/main/java/mc/protocol => utils/src/main/java/mc/utils}/pool/PassivableMultiObjectPool.java (96%) rename {protocol/src/main/java/mc/protocol => utils/src/main/java/mc/utils}/pool/PassivableObjectPool.java (96%) rename {protocol/src/main/java/mc/protocol => utils/src/main/java/mc/utils}/pool/PassivablePooledObjectFactory.java (92%) rename {protocol/src/main/java/mc/protocol => utils/src/main/java/mc/utils}/pool/SimpleObjectPool.java (95%) rename {protocol/src/main/java/mc/protocol => utils/src/main/java/mc/utils}/pool/SimplePooledObjectFactory.java (95%) diff --git a/protocol/build.gradle b/protocol/build.gradle index 11e45f2..9458488 100644 --- a/protocol/build.gradle +++ b/protocol/build.gradle @@ -3,7 +3,6 @@ apply from: rootDir.toPath().resolve('logic.gradle').toFile() dependencies { api project(':utils') - implementation libs.objpool implementation libs.netty.transport implementation libs.netty.codec implementation libs.json diff --git a/protocol/src/main/java/mc/protocol/buffer/NetByteBuf.java b/protocol/src/main/java/mc/protocol/buffer/NetByteBuf.java index e599781..ec865ea 100644 --- a/protocol/src/main/java/mc/protocol/buffer/NetByteBuf.java +++ b/protocol/src/main/java/mc/protocol/buffer/NetByteBuf.java @@ -3,13 +3,12 @@ package mc.protocol.buffer; import io.netty.buffer.ByteBuf; import lombok.EqualsAndHashCode; import lombok.RequiredArgsConstructor; -import lombok.Setter; import lombok.ToString; import lombok.experimental.Delegate; import lombok.extern.slf4j.Slf4j; import mc.protocol.model.text.Text; import mc.protocol.model.text.TextSerializer; -import mc.protocol.pool.Passivable; +import mc.utils.pool.Passivable; import java.nio.charset.StandardCharsets; import java.util.UUID; diff --git a/protocol/src/main/java/mc/protocol/packets/ClientSidePacket.java b/protocol/src/main/java/mc/protocol/packets/ClientSidePacket.java index e133a1d..060561e 100644 --- a/protocol/src/main/java/mc/protocol/packets/ClientSidePacket.java +++ b/protocol/src/main/java/mc/protocol/packets/ClientSidePacket.java @@ -1,7 +1,7 @@ package mc.protocol.packets; import mc.protocol.buffer.NetByteBuf; -import mc.protocol.pool.Passivable; +import mc.utils.pool.Passivable; /** * Пакеты отправляемые клиентом. diff --git a/protocol/src/main/java/mc/protocol/packets/play/server/ChunkDataPacket.java b/protocol/src/main/java/mc/protocol/packets/play/server/ChunkDataPacket.java index 89af3dc..b64be40 100644 --- a/protocol/src/main/java/mc/protocol/packets/play/server/ChunkDataPacket.java +++ b/protocol/src/main/java/mc/protocol/packets/play/server/ChunkDataPacket.java @@ -4,7 +4,7 @@ import io.netty.buffer.Unpooled; import lombok.Data; import mc.protocol.buffer.NetByteBuf; import mc.protocol.packets.ServerSidePacket; -import mc.protocol.pool.ObjectPool; +import mc.utils.pool.ObjectPool; import mc.protocol.pool.ProtocolObjectPool; /** diff --git a/protocol/src/main/java/mc/protocol/pool/ProtocolObjectPool.java b/protocol/src/main/java/mc/protocol/pool/ProtocolObjectPool.java index 7763289..2c50852 100644 --- a/protocol/src/main/java/mc/protocol/pool/ProtocolObjectPool.java +++ b/protocol/src/main/java/mc/protocol/pool/ProtocolObjectPool.java @@ -7,6 +7,7 @@ import mc.protocol.buffer.NetByteBuf; import mc.protocol.model.Location; import mc.protocol.model.Look; import mc.protocol.packets.ClientSidePacket; +import mc.utils.pool.*; @NoArgsConstructor(access = AccessLevel.PRIVATE) public final class ProtocolObjectPool { diff --git a/utils/build.gradle b/utils/build.gradle index 9a11526..dc7b095 100644 --- a/utils/build.gradle +++ b/utils/build.gradle @@ -1 +1,5 @@ apply from: rootDir.toPath().resolve('logic.gradle').toFile() + +dependencies { + implementation libs.objpool +} \ No newline at end of file diff --git a/protocol/src/main/java/mc/protocol/pool/MultiObjectPool.java b/utils/src/main/java/mc/utils/pool/MultiObjectPool.java similarity index 83% rename from protocol/src/main/java/mc/protocol/pool/MultiObjectPool.java rename to utils/src/main/java/mc/utils/pool/MultiObjectPool.java index e7dcbbd..6541c1e 100644 --- a/protocol/src/main/java/mc/protocol/pool/MultiObjectPool.java +++ b/utils/src/main/java/mc/utils/pool/MultiObjectPool.java @@ -1,4 +1,4 @@ -package mc.protocol.pool; +package mc.utils.pool; public interface MultiObjectPool { diff --git a/protocol/src/main/java/mc/protocol/pool/ObjectPool.java b/utils/src/main/java/mc/utils/pool/ObjectPool.java similarity index 76% rename from protocol/src/main/java/mc/protocol/pool/ObjectPool.java rename to utils/src/main/java/mc/utils/pool/ObjectPool.java index 0fd1df1..d106f20 100644 --- a/protocol/src/main/java/mc/protocol/pool/ObjectPool.java +++ b/utils/src/main/java/mc/utils/pool/ObjectPool.java @@ -1,4 +1,4 @@ -package mc.protocol.pool; +package mc.utils.pool; public interface ObjectPool { diff --git a/protocol/src/main/java/mc/protocol/pool/Passivable.java b/utils/src/main/java/mc/utils/pool/Passivable.java similarity index 67% rename from protocol/src/main/java/mc/protocol/pool/Passivable.java rename to utils/src/main/java/mc/utils/pool/Passivable.java index 856f776..2008ce0 100644 --- a/protocol/src/main/java/mc/protocol/pool/Passivable.java +++ b/utils/src/main/java/mc/utils/pool/Passivable.java @@ -1,4 +1,4 @@ -package mc.protocol.pool; +package mc.utils.pool; public interface Passivable { diff --git a/protocol/src/main/java/mc/protocol/pool/PassivableMultiObjectPool.java b/utils/src/main/java/mc/utils/pool/PassivableMultiObjectPool.java similarity index 96% rename from protocol/src/main/java/mc/protocol/pool/PassivableMultiObjectPool.java rename to utils/src/main/java/mc/utils/pool/PassivableMultiObjectPool.java index c25bc40..f428881 100644 --- a/protocol/src/main/java/mc/protocol/pool/PassivableMultiObjectPool.java +++ b/utils/src/main/java/mc/utils/pool/PassivableMultiObjectPool.java @@ -1,4 +1,4 @@ -package mc.protocol.pool; +package mc.utils.pool; import java.util.HashMap; import java.util.Map; diff --git a/protocol/src/main/java/mc/protocol/pool/PassivableObjectPool.java b/utils/src/main/java/mc/utils/pool/PassivableObjectPool.java similarity index 96% rename from protocol/src/main/java/mc/protocol/pool/PassivableObjectPool.java rename to utils/src/main/java/mc/utils/pool/PassivableObjectPool.java index e9facea..f42a2d8 100644 --- a/protocol/src/main/java/mc/protocol/pool/PassivableObjectPool.java +++ b/utils/src/main/java/mc/utils/pool/PassivableObjectPool.java @@ -1,4 +1,4 @@ -package mc.protocol.pool; +package mc.utils.pool; import lombok.SneakyThrows; import org.apache.commons.pool2.impl.GenericObjectPool; diff --git a/protocol/src/main/java/mc/protocol/pool/PassivablePooledObjectFactory.java b/utils/src/main/java/mc/utils/pool/PassivablePooledObjectFactory.java similarity index 92% rename from protocol/src/main/java/mc/protocol/pool/PassivablePooledObjectFactory.java rename to utils/src/main/java/mc/utils/pool/PassivablePooledObjectFactory.java index 8ed82eb..f6eaff1 100644 --- a/protocol/src/main/java/mc/protocol/pool/PassivablePooledObjectFactory.java +++ b/utils/src/main/java/mc/utils/pool/PassivablePooledObjectFactory.java @@ -1,4 +1,4 @@ -package mc.protocol.pool; +package mc.utils.pool; import org.apache.commons.pool2.PooledObject; diff --git a/protocol/src/main/java/mc/protocol/pool/SimpleObjectPool.java b/utils/src/main/java/mc/utils/pool/SimpleObjectPool.java similarity index 95% rename from protocol/src/main/java/mc/protocol/pool/SimpleObjectPool.java rename to utils/src/main/java/mc/utils/pool/SimpleObjectPool.java index b0402bb..f0283be 100644 --- a/protocol/src/main/java/mc/protocol/pool/SimpleObjectPool.java +++ b/utils/src/main/java/mc/utils/pool/SimpleObjectPool.java @@ -1,4 +1,4 @@ -package mc.protocol.pool; +package mc.utils.pool; import lombok.SneakyThrows; import org.apache.commons.pool2.impl.GenericObjectPool; diff --git a/protocol/src/main/java/mc/protocol/pool/SimplePooledObjectFactory.java b/utils/src/main/java/mc/utils/pool/SimplePooledObjectFactory.java similarity index 95% rename from protocol/src/main/java/mc/protocol/pool/SimplePooledObjectFactory.java rename to utils/src/main/java/mc/utils/pool/SimplePooledObjectFactory.java index 9a0694b..9e59941 100644 --- a/protocol/src/main/java/mc/protocol/pool/SimplePooledObjectFactory.java +++ b/utils/src/main/java/mc/utils/pool/SimplePooledObjectFactory.java @@ -1,4 +1,4 @@ -package mc.protocol.pool; +package mc.utils.pool; import lombok.RequiredArgsConstructor; import org.apache.commons.pool2.BasePooledObjectFactory; From 84b4069f7bcce2e5238eef13a16c9fb84cd95325 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Fri, 9 Jul 2021 13:40:31 +0300 Subject: [PATCH 2/4] =?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=20object=20pool?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/mc/protocol/buffer/NetByteBuf.java | 15 +------ .../handler/ProtocolInboundHandler.java | 5 +-- .../handler/codec/ProtocolDecoder.java | 11 +++--- .../handler/codec/ProtocolEncoder.java | 9 ++--- .../handler/codec/ProtocolSplitter.java | 6 +-- .../client/CPlayerPositionAndLookPacket.java | 8 ++-- .../packets/play/client/PlayerLookPacket.java | 4 +- .../play/client/PlayerPositionPacket.java | 4 +- .../packets/play/server/ChunkDataPacket.java | 24 ++++-------- .../protocol/pool/NetByteBufObjectPool.java | 39 +++++++++++++++++++ .../mc/protocol/pool/PooledNetByteBuf.java | 18 +++++++++ .../mc/protocol/pool/ProtocolObjectPool.java | 32 +++++++++------ .../mc/protocol/pool/UnpooledNetByteBuf.java | 11 ++++++ utils/build.gradle | 2 +- .../pool/PassivablePooledObjectFactory.java | 4 +- 15 files changed, 121 insertions(+), 71 deletions(-) create mode 100644 protocol/src/main/java/mc/protocol/pool/NetByteBufObjectPool.java create mode 100644 protocol/src/main/java/mc/protocol/pool/PooledNetByteBuf.java create mode 100644 protocol/src/main/java/mc/protocol/pool/UnpooledNetByteBuf.java diff --git a/protocol/src/main/java/mc/protocol/buffer/NetByteBuf.java b/protocol/src/main/java/mc/protocol/buffer/NetByteBuf.java index ec865ea..6ef6da0 100644 --- a/protocol/src/main/java/mc/protocol/buffer/NetByteBuf.java +++ b/protocol/src/main/java/mc/protocol/buffer/NetByteBuf.java @@ -8,7 +8,6 @@ import lombok.experimental.Delegate; import lombok.extern.slf4j.Slf4j; import mc.protocol.model.text.Text; import mc.protocol.model.text.TextSerializer; -import mc.utils.pool.Passivable; import java.nio.charset.StandardCharsets; import java.util.UUID; @@ -49,15 +48,10 @@ import java.util.UUID; @RequiredArgsConstructor @EqualsAndHashCode(callSuper = false) @ToString -public class NetByteBuf extends ByteBuf implements Passivable { +public abstract class NetByteBuf extends ByteBuf { @Delegate - private ByteBuf byteBuf; - - public NetByteBuf setByteBuf(ByteBuf byteBuf) { - this.byteBuf = byteBuf; - return this; - } + protected ByteBuf byteBuf; public void writeUnsignedByte(int value) { byteBuf.writeByte((byte)(value & 0xFF)); @@ -181,11 +175,6 @@ public class NetByteBuf extends ByteBuf implements Passivable { } //endregion - @Override - public void passivate() { - this.byteBuf = null; - } - public static int readVarInt(ByteBuf byteBuf) { int numRead = 0; int result = 0; diff --git a/protocol/src/main/java/mc/protocol/handler/ProtocolInboundHandler.java b/protocol/src/main/java/mc/protocol/handler/ProtocolInboundHandler.java index a535a90..c3a800e 100644 --- a/protocol/src/main/java/mc/protocol/handler/ProtocolInboundHandler.java +++ b/protocol/src/main/java/mc/protocol/handler/ProtocolInboundHandler.java @@ -8,7 +8,6 @@ import mc.protocol.ProtocolAttributes; import mc.protocol.State; import mc.protocol.packets.ClientSidePacket; import mc.protocol.pool.ProtocolObjectPool; -import org.apache.commons.pool2.ObjectPool; import java.io.IOException; import java.util.Objects; @@ -22,11 +21,11 @@ public class ProtocolInboundHandler extends SimpleChannelInboundHandler out) throws Exception { + protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) { State state = Objects.requireNonNull(ctx.channel().attr(ProtocolAttributes.STATE).get()); - NetByteBuf netByteBuf = ProtocolObjectPool.getNetByteBufPool().borrowObject().setByteBuf(in); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(in); int packetId = netByteBuf.readVarInt(); Class packetClass = state.getClientSidePacketById(packetId); @@ -37,7 +38,7 @@ public class ProtocolDecoder extends ByteToMessageDecoder { log.warn("Unknown packet: State {} ; Id 0x{}", state, packetIdAsHexcode(packetId)); if (readUnknownPackets) { - UnknownPacket unknownPacket = ProtocolObjectPool.getPacketPool().borrowObject(UnknownPacket.class); + UnknownPacket unknownPacket = ProtocolObjectPool.packet().borrowObject(UnknownPacket.class); unknownPacket.setState(state); unknownPacket.setId(packetId); unknownPacket.setDataSize(netByteBuf.readableBytes()); @@ -47,15 +48,13 @@ public class ProtocolDecoder extends ByteToMessageDecoder { netByteBuf.skipBytes(netByteBuf.readableBytes()); } } else { - ClientSidePacket packet = ProtocolObjectPool.getPacketPool().borrowObject(packetClass); + ClientSidePacket packet = ProtocolObjectPool.packet().borrowObject(packetClass); packet.readSelf(netByteBuf); if (log.isDebugEnabled()) { log.debug("IN: {}:{}", state, packet); } out.add(packet); } - - ProtocolObjectPool.getNetByteBufPool().returnObject(netByteBuf); } private static String packetIdAsHexcode(int packetId) { diff --git a/protocol/src/main/java/mc/protocol/handler/codec/ProtocolEncoder.java b/protocol/src/main/java/mc/protocol/handler/codec/ProtocolEncoder.java index b33693b..9a81319 100644 --- a/protocol/src/main/java/mc/protocol/handler/codec/ProtocolEncoder.java +++ b/protocol/src/main/java/mc/protocol/handler/codec/ProtocolEncoder.java @@ -9,7 +9,7 @@ import mc.protocol.ProtocolAttributes; import mc.protocol.State; import mc.protocol.buffer.NetByteBuf; import mc.protocol.packets.ServerSidePacket; -import mc.protocol.pool.ProtocolObjectPool; +import mc.protocol.pool.UnpooledNetByteBuf; import java.util.Objects; @@ -29,15 +29,12 @@ public class ProtocolEncoder extends MessageToByteEncoder { log.debug("OUT: {}:{}", state, packet); } - NetByteBuf buffer = ProtocolObjectPool.getNetByteBufPool().borrowObject().setByteBuf(Unpooled.buffer()); + NetByteBuf buffer = new UnpooledNetByteBuf(Unpooled.buffer()); buffer.writeVarInt(packetId); packet.writeSelf(buffer); - NetByteBuf netByteBuf = ProtocolObjectPool.getNetByteBufPool().borrowObject().setByteBuf(out); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(out); netByteBuf.writeVarInt(buffer.readableBytes()); netByteBuf.writeBytes(buffer); - - ProtocolObjectPool.getNetByteBufPool().returnObject(netByteBuf); - ProtocolObjectPool.getNetByteBufPool().returnObject(buffer); } } diff --git a/protocol/src/main/java/mc/protocol/handler/codec/ProtocolSplitter.java b/protocol/src/main/java/mc/protocol/handler/codec/ProtocolSplitter.java index abb408b..e7b6145 100644 --- a/protocol/src/main/java/mc/protocol/handler/codec/ProtocolSplitter.java +++ b/protocol/src/main/java/mc/protocol/handler/codec/ProtocolSplitter.java @@ -5,7 +5,7 @@ import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.ByteToMessageDecoder; import mc.protocol.buffer.NetByteBuf; -import mc.protocol.pool.ProtocolObjectPool; +import mc.protocol.pool.UnpooledNetByteBuf; import java.util.List; @@ -13,7 +13,7 @@ public class ProtocolSplitter extends ByteToMessageDecoder { @Override protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) { - NetByteBuf netByteBuf = ProtocolObjectPool.getNetByteBufPool().borrowObject().setByteBuf(in); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(in); netByteBuf.markReaderIndex(); do { @@ -37,7 +37,5 @@ public class ProtocolSplitter extends ByteToMessageDecoder { break; } } while (netByteBuf.readableBytes() > 0); - - ProtocolObjectPool.getNetByteBufPool().returnObject(netByteBuf); } } diff --git a/protocol/src/main/java/mc/protocol/packets/play/client/CPlayerPositionAndLookPacket.java b/protocol/src/main/java/mc/protocol/packets/play/client/CPlayerPositionAndLookPacket.java index 3e9b3b6..f975ea7 100644 --- a/protocol/src/main/java/mc/protocol/packets/play/client/CPlayerPositionAndLookPacket.java +++ b/protocol/src/main/java/mc/protocol/packets/play/client/CPlayerPositionAndLookPacket.java @@ -43,20 +43,20 @@ public class CPlayerPositionAndLookPacket implements ClientSidePacket { double x = netByteBuf.readDouble(); double y = netByteBuf.readDouble(); double z = netByteBuf.readDouble(); - this.position = ProtocolObjectPool.getLocationPool().borrowObject().set(x, y, z); + this.position = ProtocolObjectPool.location().borrowObject().set(x, y, z); float yaw = netByteBuf.readFloat(); float pitch = netByteBuf.readFloat(); - this.look = ProtocolObjectPool.getLookPool().borrowObject().set(yaw, pitch); + this.look = ProtocolObjectPool.look().borrowObject().set(yaw, pitch); this.onGround = netByteBuf.readBoolean(); } @Override public void passivate() { - ProtocolObjectPool.getLocationPool().returnObject(this.position); + ProtocolObjectPool.location().returnObject(this.position); this.position = null; - ProtocolObjectPool.getLookPool().returnObject(this.look); + ProtocolObjectPool.look().returnObject(this.look); this.look = null; this.onGround = false; } diff --git a/protocol/src/main/java/mc/protocol/packets/play/client/PlayerLookPacket.java b/protocol/src/main/java/mc/protocol/packets/play/client/PlayerLookPacket.java index cff9cbf..513a65c 100644 --- a/protocol/src/main/java/mc/protocol/packets/play/client/PlayerLookPacket.java +++ b/protocol/src/main/java/mc/protocol/packets/play/client/PlayerLookPacket.java @@ -36,14 +36,14 @@ public class PlayerLookPacket implements ClientSidePacket { public void readSelf(NetByteBuf netByteBuf) { float yaw = netByteBuf.readFloat(); float pitch = netByteBuf.readFloat(); - this.look = ProtocolObjectPool.getLookPool().borrowObject().set(yaw, pitch); + this.look = ProtocolObjectPool.look().borrowObject().set(yaw, pitch); this.onGround = netByteBuf.readBoolean(); } @Override public void passivate() { - ProtocolObjectPool.getLookPool().returnObject(this.look); + ProtocolObjectPool.look().returnObject(this.look); this.look = null; this.onGround = false; } diff --git a/protocol/src/main/java/mc/protocol/packets/play/client/PlayerPositionPacket.java b/protocol/src/main/java/mc/protocol/packets/play/client/PlayerPositionPacket.java index 0a8bf1d..b8eaeb3 100644 --- a/protocol/src/main/java/mc/protocol/packets/play/client/PlayerPositionPacket.java +++ b/protocol/src/main/java/mc/protocol/packets/play/client/PlayerPositionPacket.java @@ -39,14 +39,14 @@ public class PlayerPositionPacket implements ClientSidePacket { double x = netByteBuf.readDouble(); double y = netByteBuf.readDouble(); double z = netByteBuf.readDouble(); - this.position = ProtocolObjectPool.getLocationPool().borrowObject().set(x, y, z); + this.position = ProtocolObjectPool.location().borrowObject().set(x, y, z); this.onGround = netByteBuf.readBoolean(); } @Override public void passivate() { - ProtocolObjectPool.getLocationPool().returnObject(this.position); + ProtocolObjectPool.location().returnObject(this.position); this.position = null; this.onGround = false; } diff --git a/protocol/src/main/java/mc/protocol/packets/play/server/ChunkDataPacket.java b/protocol/src/main/java/mc/protocol/packets/play/server/ChunkDataPacket.java index b64be40..8399ff9 100644 --- a/protocol/src/main/java/mc/protocol/packets/play/server/ChunkDataPacket.java +++ b/protocol/src/main/java/mc/protocol/packets/play/server/ChunkDataPacket.java @@ -4,8 +4,7 @@ import io.netty.buffer.Unpooled; import lombok.Data; import mc.protocol.buffer.NetByteBuf; import mc.protocol.packets.ServerSidePacket; -import mc.utils.pool.ObjectPool; -import mc.protocol.pool.ProtocolObjectPool; +import mc.protocol.pool.UnpooledNetByteBuf; /** * Данные чанка. @@ -80,18 +79,16 @@ public class ChunkDataPacket implements ServerSidePacket { } static { - ObjectPool pool = ProtocolObjectPool.getNetByteBufPool(); - - voidData = pool.borrowObject().setByteBuf(Unpooled.buffer()); + voidData = new UnpooledNetByteBuf(Unpooled.buffer()); voidData.writeBoolean(true); // Is Full chunk voidData.writeVarInt(0b11111111); // Available Sections - NetByteBuf data = pool.borrowObject().setByteBuf(Unpooled.buffer()); + NetByteBuf data = new UnpooledNetByteBuf(Unpooled.buffer()); for (int i = 0; i < 16; i++) { - NetByteBuf dataBuff = pool.borrowObject().setByteBuf(Unpooled.wrappedBuffer(new byte[4096])); - NetByteBuf blockLight = pool.borrowObject().setByteBuf(Unpooled.wrappedBuffer(new byte[2048])); - NetByteBuf skyLight = pool.borrowObject().setByteBuf(Unpooled.wrappedBuffer(new byte[2048])); - NetByteBuf biomes = pool.borrowObject().setByteBuf(Unpooled.wrappedBuffer(new byte[256])); + NetByteBuf dataBuff = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(new byte[4096])); + NetByteBuf blockLight = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(new byte[2048])); + NetByteBuf skyLight = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(new byte[2048])); + NetByteBuf biomes = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(new byte[256])); data.writeUnsignedByte(13); data.writeUnsignedByte(0); @@ -100,11 +97,6 @@ public class ChunkDataPacket implements ServerSidePacket { data.writeBytes(blockLight); data.writeBytes(skyLight); data.writeBytes(biomes); - - pool.returnObject(biomes); - pool.returnObject(skyLight); - pool.returnObject(blockLight); - pool.returnObject(dataBuff); } voidData.writeVarInt(data.readableBytes()); @@ -113,7 +105,5 @@ public class ChunkDataPacket implements ServerSidePacket { voidData.markReaderIndex(); voidData.markWriterIndex(); - - pool.returnObject(data); } } diff --git a/protocol/src/main/java/mc/protocol/pool/NetByteBufObjectPool.java b/protocol/src/main/java/mc/protocol/pool/NetByteBufObjectPool.java new file mode 100644 index 0000000..6d6ff71 --- /dev/null +++ b/protocol/src/main/java/mc/protocol/pool/NetByteBufObjectPool.java @@ -0,0 +1,39 @@ +package mc.protocol.pool; + +import io.netty.buffer.ByteBuf; +import io.netty.buffer.PooledByteBufAllocator; +import lombok.SneakyThrows; +import mc.protocol.buffer.NetByteBuf; +import mc.utils.pool.ObjectPool; +import mc.utils.pool.PassivablePooledObjectFactory; +import org.apache.commons.pool2.impl.GenericObjectPool; + +@SuppressWarnings({ "rawtypes", "unchecked" }) +public class NetByteBufObjectPool implements ObjectPool { + + private final org.apache.commons.pool2.ObjectPool apacheObjectPool; + + NetByteBufObjectPool() { + this.apacheObjectPool = new GenericObjectPool<>(new PassivablePooledObjectFactory<>(PooledNetByteBuf.class)); + } + + @Override + public NetByteBuf borrowObject() { + return borrowObject(PooledByteBufAllocator.DEFAULT.buffer()); + } + + @SneakyThrows + public NetByteBuf borrowObject(ByteBuf byteBuf) { + PooledNetByteBuf pooledNetByteBuf = (PooledNetByteBuf) apacheObjectPool.borrowObject(); + pooledNetByteBuf.init(byteBuf); + return pooledNetByteBuf; + } + + @Override + @SneakyThrows + public void returnObject(NetByteBuf netByteBuf) { + if (netByteBuf instanceof PooledNetByteBuf) { + apacheObjectPool.returnObject(netByteBuf); + } + } +} diff --git a/protocol/src/main/java/mc/protocol/pool/PooledNetByteBuf.java b/protocol/src/main/java/mc/protocol/pool/PooledNetByteBuf.java new file mode 100644 index 0000000..e9e26fa --- /dev/null +++ b/protocol/src/main/java/mc/protocol/pool/PooledNetByteBuf.java @@ -0,0 +1,18 @@ +package mc.protocol.pool; + +import io.netty.buffer.ByteBuf; +import mc.protocol.buffer.NetByteBuf; +import mc.utils.pool.Passivable; + +public class PooledNetByteBuf extends NetByteBuf implements Passivable { + + void init(ByteBuf byteBuf) { + this.byteBuf = byteBuf; + } + + @Override + public void passivate() { + this.byteBuf.release(); + this.byteBuf = null; + } +} diff --git a/protocol/src/main/java/mc/protocol/pool/ProtocolObjectPool.java b/protocol/src/main/java/mc/protocol/pool/ProtocolObjectPool.java index 2c50852..f239447 100644 --- a/protocol/src/main/java/mc/protocol/pool/ProtocolObjectPool.java +++ b/protocol/src/main/java/mc/protocol/pool/ProtocolObjectPool.java @@ -1,26 +1,36 @@ package mc.protocol.pool; import lombok.AccessLevel; -import lombok.Getter; import lombok.NoArgsConstructor; -import mc.protocol.buffer.NetByteBuf; import mc.protocol.model.Location; import mc.protocol.model.Look; import mc.protocol.packets.ClientSidePacket; -import mc.utils.pool.*; +import mc.utils.pool.MultiObjectPool; +import mc.utils.pool.ObjectPool; +import mc.utils.pool.PassivableMultiObjectPool; +import mc.utils.pool.SimpleObjectPool; @NoArgsConstructor(access = AccessLevel.PRIVATE) public final class ProtocolObjectPool { - @Getter private static final ObjectPool locationPool = new SimpleObjectPool<>(Location.class); - - @Getter private static final ObjectPool lookPool = new SimpleObjectPool<>(Look.class); - - @Getter - private static final ObjectPool netByteBufPool = new PassivableObjectPool<>(NetByteBuf.class); - - @Getter + private static final NetByteBufObjectPool netByteBufPool = new NetByteBufObjectPool(); private static final MultiObjectPool packetPool = new PassivableMultiObjectPool<>(); + + public static ObjectPool location() { + return locationPool; + } + + public static ObjectPool look() { + return lookPool; + } + + public static NetByteBufObjectPool netByteBuf() { + return netByteBufPool; + } + + public static MultiObjectPool packet() { + return packetPool; + } } diff --git a/protocol/src/main/java/mc/protocol/pool/UnpooledNetByteBuf.java b/protocol/src/main/java/mc/protocol/pool/UnpooledNetByteBuf.java new file mode 100644 index 0000000..06fcc57 --- /dev/null +++ b/protocol/src/main/java/mc/protocol/pool/UnpooledNetByteBuf.java @@ -0,0 +1,11 @@ +package mc.protocol.pool; + +import io.netty.buffer.ByteBuf; +import mc.protocol.buffer.NetByteBuf; + +public class UnpooledNetByteBuf extends NetByteBuf { + + public UnpooledNetByteBuf(ByteBuf byteBuf) { + this.byteBuf = byteBuf; + } +} diff --git a/utils/build.gradle b/utils/build.gradle index dc7b095..f1a96d2 100644 --- a/utils/build.gradle +++ b/utils/build.gradle @@ -1,5 +1,5 @@ apply from: rootDir.toPath().resolve('logic.gradle').toFile() dependencies { - implementation libs.objpool + api libs.objpool } \ No newline at end of file diff --git a/utils/src/main/java/mc/utils/pool/PassivablePooledObjectFactory.java b/utils/src/main/java/mc/utils/pool/PassivablePooledObjectFactory.java index f6eaff1..9e2a601 100644 --- a/utils/src/main/java/mc/utils/pool/PassivablePooledObjectFactory.java +++ b/utils/src/main/java/mc/utils/pool/PassivablePooledObjectFactory.java @@ -2,9 +2,9 @@ package mc.utils.pool; import org.apache.commons.pool2.PooledObject; -class PassivablePooledObjectFactory extends SimplePooledObjectFactory { +public class PassivablePooledObjectFactory extends SimplePooledObjectFactory { - PassivablePooledObjectFactory(Class clazz) { + public PassivablePooledObjectFactory(Class clazz) { super(clazz); } From ee8c9e4a3e967945a5f03069ff6b1c3dd6d12517 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Fri, 9 Jul 2021 14:19:05 +0300 Subject: [PATCH 3/4] =?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=20object=20pool=20=D0=B4=D0=BB=D1=8F?= =?UTF-8?q?=20NetByteBuf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/codec/ProtocolDecoder.java | 5 +++-- .../handler/codec/ProtocolEncoder.java | 10 +++++---- .../packets/play/server/ChunkDataPacket.java | 22 +++++++++---------- .../protocol/pool/NetByteBufObjectPool.java | 2 +- .../mc/protocol/pool/PooledNetByteBuf.java | 2 +- server/src/main/resources/logback-default.xml | 6 +++++ 6 files changed, 27 insertions(+), 20 deletions(-) diff --git a/protocol/src/main/java/mc/protocol/handler/codec/ProtocolDecoder.java b/protocol/src/main/java/mc/protocol/handler/codec/ProtocolDecoder.java index fa6eae1..64318e7 100644 --- a/protocol/src/main/java/mc/protocol/handler/codec/ProtocolDecoder.java +++ b/protocol/src/main/java/mc/protocol/handler/codec/ProtocolDecoder.java @@ -11,7 +11,6 @@ import mc.protocol.buffer.NetByteBuf; import mc.protocol.packets.ClientSidePacket; import mc.protocol.packets.UnknownPacket; import mc.protocol.pool.ProtocolObjectPool; -import mc.protocol.pool.UnpooledNetByteBuf; import java.util.List; import java.util.Objects; @@ -30,7 +29,7 @@ public class ProtocolDecoder extends ByteToMessageDecoder { @Override protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) { State state = Objects.requireNonNull(ctx.channel().attr(ProtocolAttributes.STATE).get()); - NetByteBuf netByteBuf = new UnpooledNetByteBuf(in); + NetByteBuf netByteBuf = ProtocolObjectPool.netByteBuf().borrowObject(in); int packetId = netByteBuf.readVarInt(); Class packetClass = state.getClientSidePacketById(packetId); @@ -55,6 +54,8 @@ public class ProtocolDecoder extends ByteToMessageDecoder { } out.add(packet); } + + ProtocolObjectPool.netByteBuf().returnObject(netByteBuf); } private static String packetIdAsHexcode(int packetId) { diff --git a/protocol/src/main/java/mc/protocol/handler/codec/ProtocolEncoder.java b/protocol/src/main/java/mc/protocol/handler/codec/ProtocolEncoder.java index 9a81319..a020d0c 100644 --- a/protocol/src/main/java/mc/protocol/handler/codec/ProtocolEncoder.java +++ b/protocol/src/main/java/mc/protocol/handler/codec/ProtocolEncoder.java @@ -1,7 +1,6 @@ package mc.protocol.handler.codec; import io.netty.buffer.ByteBuf; -import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.MessageToByteEncoder; import lombok.extern.slf4j.Slf4j; @@ -9,7 +8,7 @@ import mc.protocol.ProtocolAttributes; import mc.protocol.State; import mc.protocol.buffer.NetByteBuf; import mc.protocol.packets.ServerSidePacket; -import mc.protocol.pool.UnpooledNetByteBuf; +import mc.protocol.pool.ProtocolObjectPool; import java.util.Objects; @@ -29,12 +28,15 @@ public class ProtocolEncoder extends MessageToByteEncoder { log.debug("OUT: {}:{}", state, packet); } - NetByteBuf buffer = new UnpooledNetByteBuf(Unpooled.buffer()); + NetByteBuf buffer = ProtocolObjectPool.netByteBuf().borrowObject(); buffer.writeVarInt(packetId); packet.writeSelf(buffer); - NetByteBuf netByteBuf = new UnpooledNetByteBuf(out); + NetByteBuf netByteBuf = ProtocolObjectPool.netByteBuf().borrowObject(out); netByteBuf.writeVarInt(buffer.readableBytes()); netByteBuf.writeBytes(buffer); + + ProtocolObjectPool.netByteBuf().returnObject(netByteBuf); + ProtocolObjectPool.netByteBuf().returnObject(buffer); } } diff --git a/protocol/src/main/java/mc/protocol/packets/play/server/ChunkDataPacket.java b/protocol/src/main/java/mc/protocol/packets/play/server/ChunkDataPacket.java index 8399ff9..cd98d77 100644 --- a/protocol/src/main/java/mc/protocol/packets/play/server/ChunkDataPacket.java +++ b/protocol/src/main/java/mc/protocol/packets/play/server/ChunkDataPacket.java @@ -4,6 +4,7 @@ import io.netty.buffer.Unpooled; import lombok.Data; import mc.protocol.buffer.NetByteBuf; import mc.protocol.packets.ServerSidePacket; +import mc.protocol.pool.ProtocolObjectPool; import mc.protocol.pool.UnpooledNetByteBuf; /** @@ -79,24 +80,19 @@ public class ChunkDataPacket implements ServerSidePacket { } static { - voidData = new UnpooledNetByteBuf(Unpooled.buffer()); + voidData = new UnpooledNetByteBuf(Unpooled.directBuffer()); voidData.writeBoolean(true); // Is Full chunk voidData.writeVarInt(0b11111111); // Available Sections - NetByteBuf data = new UnpooledNetByteBuf(Unpooled.buffer()); + NetByteBuf data = ProtocolObjectPool.netByteBuf().borrowObject(); for (int i = 0; i < 16; i++) { - NetByteBuf dataBuff = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(new byte[4096])); - NetByteBuf blockLight = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(new byte[2048])); - NetByteBuf skyLight = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(new byte[2048])); - NetByteBuf biomes = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(new byte[256])); - data.writeUnsignedByte(13); data.writeUnsignedByte(0); - data.writeVarInt(dataBuff.readableBytes()); - data.writeBytes(dataBuff); - data.writeBytes(blockLight); - data.writeBytes(skyLight); - data.writeBytes(biomes); + data.writeVarInt(4096); // dataBuff.length + data.writeBytes(new byte[4096]); // dataBuff + data.writeBytes(new byte[2048]); // blockLight + data.writeBytes(new byte[2048]); // skyLight + data.writeBytes(new byte[256]); // biomes } voidData.writeVarInt(data.readableBytes()); @@ -105,5 +101,7 @@ public class ChunkDataPacket implements ServerSidePacket { voidData.markReaderIndex(); voidData.markWriterIndex(); + + ProtocolObjectPool.netByteBuf().returnObject(data); } } diff --git a/protocol/src/main/java/mc/protocol/pool/NetByteBufObjectPool.java b/protocol/src/main/java/mc/protocol/pool/NetByteBufObjectPool.java index 6d6ff71..e080317 100644 --- a/protocol/src/main/java/mc/protocol/pool/NetByteBufObjectPool.java +++ b/protocol/src/main/java/mc/protocol/pool/NetByteBufObjectPool.java @@ -19,7 +19,7 @@ public class NetByteBufObjectPool implements ObjectPool { @Override public NetByteBuf borrowObject() { - return borrowObject(PooledByteBufAllocator.DEFAULT.buffer()); + return borrowObject(PooledByteBufAllocator.DEFAULT.directBuffer()); } @SneakyThrows diff --git a/protocol/src/main/java/mc/protocol/pool/PooledNetByteBuf.java b/protocol/src/main/java/mc/protocol/pool/PooledNetByteBuf.java index e9e26fa..2cb8c8c 100644 --- a/protocol/src/main/java/mc/protocol/pool/PooledNetByteBuf.java +++ b/protocol/src/main/java/mc/protocol/pool/PooledNetByteBuf.java @@ -7,7 +7,7 @@ import mc.utils.pool.Passivable; public class PooledNetByteBuf extends NetByteBuf implements Passivable { void init(ByteBuf byteBuf) { - this.byteBuf = byteBuf; + this.byteBuf = byteBuf.retain(); } @Override diff --git a/server/src/main/resources/logback-default.xml b/server/src/main/resources/logback-default.xml index 2e6a315..18f9e7c 100644 --- a/server/src/main/resources/logback-default.xml +++ b/server/src/main/resources/logback-default.xml @@ -20,4 +20,10 @@ + + + + + + \ No newline at end of file From f149019b88dcc4a6c1bbc912e148da195ac38bb1 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Fri, 9 Jul 2021 14:22:39 +0300 Subject: [PATCH 4/4] fix tests --- .../protocol/buffer/NetByteBufReadTest.java | 31 ++++++++++--------- .../protocol/buffer/NetByteBufWriteTest.java | 23 +++++++------- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/protocol/src/test/java/mc/protocol/buffer/NetByteBufReadTest.java b/protocol/src/test/java/mc/protocol/buffer/NetByteBufReadTest.java index 1fe676a..839e9b1 100644 --- a/protocol/src/test/java/mc/protocol/buffer/NetByteBufReadTest.java +++ b/protocol/src/test/java/mc/protocol/buffer/NetByteBufReadTest.java @@ -1,6 +1,7 @@ package mc.protocol.buffer; import io.netty.buffer.Unpooled; +import mc.protocol.pool.UnpooledNetByteBuf; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; @@ -33,7 +34,7 @@ class NetByteBufReadTest { void readBoolean(byte sourceByte, boolean expectedValue) { baos.write(sourceByte); - NetByteBuf netByteBuf = new NetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); assertEquals(expectedValue, netByteBuf.readBoolean()); } @@ -44,7 +45,7 @@ class NetByteBufReadTest { random.nextBytes(bytes); baos.write(bytes[0]); - NetByteBuf netByteBuf = new NetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); assertEquals(bytes[0], netByteBuf.readByte()); } @@ -54,7 +55,7 @@ class NetByteBufReadTest { void readUnsignedByte(byte sourceByte, int expectedValue) { baos.write(sourceByte); - NetByteBuf netByteBuf = new NetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); assertEquals(expectedValue, netByteBuf.readUnsignedByte()); } @@ -64,7 +65,7 @@ class NetByteBufReadTest { int value = Integer.valueOf(random.nextInt()).shortValue(); new DataOutputStream(baos).writeShort(value); - NetByteBuf netByteBuf = new NetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); assertEquals(value, netByteBuf.readShort()); } @@ -74,7 +75,7 @@ class NetByteBufReadTest { int value = 32768; new DataOutputStream(baos).writeShort(value); - NetByteBuf netByteBuf = new NetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); assertEquals(value, netByteBuf.readUnsignedShort()); } @@ -89,7 +90,7 @@ class NetByteBufReadTest { baos.write(bytes); - NetByteBuf netByteBuf = new NetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); assertEquals(string, netByteBuf.readString()); } @@ -105,7 +106,7 @@ class NetByteBufReadTest { baos.write(bytes); - NetByteBuf netByteBuf = new NetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); assertThrows(NetIOException.class, () -> netByteBuf.readString(length)); } @@ -124,7 +125,7 @@ class NetByteBufReadTest { baos.write(bytes); - NetByteBuf netByteBuf = new NetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); assertThrows(NetIOException.class, () -> netByteBuf.readString(-1)); } @@ -134,7 +135,7 @@ class NetByteBufReadTest { void readVarInt(byte[] sourceBytes, int expectedValue) throws IOException { baos.write(sourceBytes); - NetByteBuf netByteBuf = new NetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); assertEquals(expectedValue, netByteBuf.readVarInt()); } @@ -143,7 +144,7 @@ class NetByteBufReadTest { void readVarInt_tooBig() throws IOException { baos.write(new byte[]{ (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0x0F }); - NetByteBuf netByteBuf = new NetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); assertEquals(-1, netByteBuf.readVarInt()); } @@ -153,7 +154,7 @@ class NetByteBufReadTest { void readVarLong(byte[] sourceBytes, long expectedValue) throws IOException { baos.write(sourceBytes); - NetByteBuf netByteBuf = new NetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); assertEquals(expectedValue, netByteBuf.readVarLong()); } @@ -164,7 +165,7 @@ class NetByteBufReadTest { (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0x0F }); - NetByteBuf netByteBuf = new NetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); assertEquals(-1, netByteBuf.readVarLong()); } @@ -196,7 +197,7 @@ class NetByteBufReadTest { (byte) (leastSignificantBits & 0xFF) }); - NetByteBuf netByteBuf = new NetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); assertEquals(uuid, netByteBuf.readUUID()); } @@ -208,7 +209,7 @@ class NetByteBufReadTest { baos.write(bytes); byte[] actualBytes = new byte[128]; - NetByteBuf netByteBuf = new NetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); assertEquals(bytes.length, netByteBuf.readableBytes()); @@ -225,7 +226,7 @@ class NetByteBufReadTest { baos.write(bytes); byte[] buff = new byte[128]; - NetByteBuf netByteBuf = new NetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(Unpooled.wrappedBuffer(baos.toByteArray())); netByteBuf.readBytes(buff, 3, 11); byte[] expectedBytes = new byte[11]; diff --git a/protocol/src/test/java/mc/protocol/buffer/NetByteBufWriteTest.java b/protocol/src/test/java/mc/protocol/buffer/NetByteBufWriteTest.java index c1c101d..a94709d 100644 --- a/protocol/src/test/java/mc/protocol/buffer/NetByteBufWriteTest.java +++ b/protocol/src/test/java/mc/protocol/buffer/NetByteBufWriteTest.java @@ -2,6 +2,7 @@ package mc.protocol.buffer; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; +import mc.protocol.pool.UnpooledNetByteBuf; import org.apache.commons.lang3.RandomStringUtils; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -30,7 +31,7 @@ class NetByteBufWriteTest { @MethodSource("paramsWriteBoolean") void writeBoolean(boolean sourceValue, byte expectedByte) { ByteBuf byteBuf = Unpooled.buffer(); - NetByteBuf netByteBuf = new NetByteBuf(byteBuf); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(byteBuf); netByteBuf.writeBoolean(sourceValue); @@ -41,7 +42,7 @@ class NetByteBufWriteTest { @MethodSource("paramsWriteByte") void writeByte(byte sourceValue, byte expectedByte) { ByteBuf byteBuf = Unpooled.buffer(); - NetByteBuf netByteBuf = new NetByteBuf(byteBuf); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(byteBuf); netByteBuf.writeByte(sourceValue); @@ -51,7 +52,7 @@ class NetByteBufWriteTest { @Test void writeUnsignedByte() { ByteBuf byteBuf = Unpooled.buffer(); - NetByteBuf netByteBuf = new NetByteBuf(byteBuf); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(byteBuf); netByteBuf.writeUnsignedByte(129); @@ -62,7 +63,7 @@ class NetByteBufWriteTest { @MethodSource("paramsWriteString") void writeString(String string, int exceptedLength) { ByteBuf byteBuf = Unpooled.buffer(); - NetByteBuf netByteBuf = new NetByteBuf(byteBuf); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(byteBuf); netByteBuf.writeString(string); @@ -81,11 +82,11 @@ class NetByteBufWriteTest { String overSizeString = RandomStringUtils.randomAscii(Short.MAX_VALUE + Short.MAX_VALUE); ByteBuf byteBuf = Unpooled.buffer(); - NetByteBuf netByteBuf = new NetByteBuf(byteBuf); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(byteBuf); netByteBuf.writeString(overSizeString); - NetByteBuf netByteBuf2 = new NetByteBuf(byteBuf.copy()); + NetByteBuf netByteBuf2 = new UnpooledNetByteBuf(byteBuf.copy()); String actualString = netByteBuf2.readString(); String expectedString = overSizeString.substring(0, Short.MAX_VALUE); @@ -97,7 +98,7 @@ class NetByteBufWriteTest { @MethodSource("paramsWriteVarInt") void writeVarInt(int sourceValue, byte[] expectedBytes) { ByteBuf byteBuf = Unpooled.buffer(); - NetByteBuf netByteBuf = new NetByteBuf(byteBuf); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(byteBuf); netByteBuf.writeVarInt(sourceValue); byte[] actualArray = netByteBuf.copy(0, netByteBuf.readableBytes()).array(); @@ -109,7 +110,7 @@ class NetByteBufWriteTest { @MethodSource({ "paramsWriteVarInt", "paramsWriteVarLong" }) void writeVarLong(long sourceValue, byte[] expectedBytes) { ByteBuf byteBuf = Unpooled.buffer(); - NetByteBuf netByteBuf = new NetByteBuf(byteBuf); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(byteBuf); netByteBuf.writeVarLong(sourceValue); byte[] actualArray = netByteBuf.copy(0, netByteBuf.readableBytes()).array(); @@ -122,7 +123,7 @@ class NetByteBufWriteTest { final UUID uuid = UUID.randomUUID(); ByteBuf byteBuf = Unpooled.buffer(); - NetByteBuf netByteBuf = new NetByteBuf(byteBuf); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(byteBuf); netByteBuf.writeUUID(uuid); @@ -158,7 +159,7 @@ class NetByteBufWriteTest { random.nextBytes(bytes); ByteBuf byteBuf = Unpooled.buffer(); - NetByteBuf netByteBuf = new NetByteBuf(byteBuf); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(byteBuf); netByteBuf.writeBytes(bytes); byte[] actualArray = netByteBuf.copy(0, netByteBuf.readableBytes()).array(); @@ -172,7 +173,7 @@ class NetByteBufWriteTest { random.nextBytes(bytes); ByteBuf byteBuf = Unpooled.buffer(); - NetByteBuf netByteBuf = new NetByteBuf(byteBuf); + NetByteBuf netByteBuf = new UnpooledNetByteBuf(byteBuf); netByteBuf.writeBytes(bytes, 3, 11);