diff --git a/src/main/java/net/packet/ByteBufInPacket.java b/src/main/java/net/packet/ByteBufInPacket.java index 481c5855cb..c2e2984499 100644 --- a/src/main/java/net/packet/ByteBufInPacket.java +++ b/src/main/java/net/packet/ByteBufInPacket.java @@ -11,10 +11,15 @@ public class ByteBufInPacket implements InPacket { this.byteBuf = byteBuf; } + @Override + public short getHeader() { + return byteBuf.getShortLE(0); + } + @Override public byte[] getBytes() { - // TODO - return null; + // TODO implement + throw new UnsupportedOperationException(); } @Override @@ -51,15 +56,15 @@ public class ByteBufInPacket implements InPacket { } @Override - public byte[] read(int numberOfBytes) { - byte[] bytes = new byte[numberOfBytes]; + public byte[] readBytes(int bytesToRead) { + byte[] bytes = new byte[bytesToRead]; byteBuf.readBytes(bytes); return bytes; } @Override - public void skip(int numberOfBytes) { - byteBuf.skipBytes(numberOfBytes); + public void skip(int bytesToSkip) { + byteBuf.skipBytes(bytesToSkip); } @Override diff --git a/src/main/java/net/packet/ByteBufOutPacket.java b/src/main/java/net/packet/ByteBufOutPacket.java index f2aa491cfb..d36c594f83 100644 --- a/src/main/java/net/packet/ByteBufOutPacket.java +++ b/src/main/java/net/packet/ByteBufOutPacket.java @@ -1,11 +1,88 @@ package net.packet; import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; +import net.jcip.annotations.NotThreadSafe; +import net.opcodes.SendOpcode; +import java.awt.*; + +@NotThreadSafe public class ByteBufOutPacket implements OutPacket { private final ByteBuf byteBuf; - public ByteBufOutPacket(ByteBuf byteBuf) { + public ByteBufOutPacket(SendOpcode op) { + ByteBuf byteBuf = Unpooled.buffer(); + byteBuf.writeShortLE((short) op.getValue()); this.byteBuf = byteBuf; } + + public ByteBufOutPacket(SendOpcode op, int initialCapacity) { + ByteBuf byteBuf = Unpooled.buffer(initialCapacity); + byteBuf.writeShortLE((short) op.getValue()); + this.byteBuf = byteBuf; + } + + @Override + public short getHeader() { + return byteBuf.getShortLE(0); + } + + @Override + public byte[] getBytes() { + // TODO implement + throw new UnsupportedOperationException(); + } + + @Override + public void writeByte(byte value) { + byteBuf.writeByte(value); + } + + @Override + public void writeByte(int value) { + writeByte((byte) value); + } + + @Override + public void writeBytes(byte[] value) { + byteBuf.writeBytes(value); + } + + @Override + public void writeShort(short value) { + byteBuf.writeShortLE(value); + } + + @Override + public void writeInt(int value) { + byteBuf.writeIntLE(value); + } + + @Override + public void writeLong(long value) { + byteBuf.writeLongLE(value); + } + + @Override + public void writeBoolean(boolean value) { + byteBuf.writeByte(value ? 1 : 0); + } + + @Override + public void writeString(String value) { + writeShort((short) value.length()); + writeBytes(value.getBytes(STRING_CHARSET)); + } + + @Override + public void writePoint(Point value) { + writeShort((short) value.getX()); + writeShort((short) value.getY()); + } + + @Override + public void skip(int bytesToSkip) { + writeBytes(new byte[bytesToSkip]); + } } diff --git a/src/main/java/net/packet/InPacket.java b/src/main/java/net/packet/InPacket.java index 53ef38bb42..c2493227a4 100644 --- a/src/main/java/net/packet/InPacket.java +++ b/src/main/java/net/packet/InPacket.java @@ -9,7 +9,7 @@ public interface InPacket extends Packet { long readLong(); Point readPoint(); String readString(); - byte[] read(int numberOfBytes); + byte[] readBytes(int bytesToRead); void skip(int numberOfBytes); int available(); void seek(int byteOffset); diff --git a/src/main/java/net/packet/OutPacket.java b/src/main/java/net/packet/OutPacket.java index 6d1fb8982a..9b6804abb8 100644 --- a/src/main/java/net/packet/OutPacket.java +++ b/src/main/java/net/packet/OutPacket.java @@ -1,4 +1,20 @@ package net.packet; +import java.awt.*; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; + public interface OutPacket extends Packet { + Charset STRING_CHARSET = StandardCharsets.US_ASCII; + + void writeByte(byte value); + void writeByte(int value); + void writeBytes(byte[] value); + void writeShort(short value); + void writeInt(int value); + void writeLong(long value); + void writeBoolean(boolean value); + void writeString(String value); + void writePoint(Point value); + void skip(int numberOfBytes); } diff --git a/src/main/java/net/packet/Packet.java b/src/main/java/net/packet/Packet.java index 8e1b7cfb99..6bbd4cc4dc 100644 --- a/src/main/java/net/packet/Packet.java +++ b/src/main/java/net/packet/Packet.java @@ -1,5 +1,6 @@ package net.packet; public interface Packet { + short getHeader(); byte[] getBytes(); }