Add OutPacket interface and ByteBuf implementation
Replacement for LittleEndianWriter, GenericLittleEndianWriter, and MaplePacketLittleEndianWriter.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.packet;
|
||||
|
||||
public interface Packet {
|
||||
short getHeader();
|
||||
byte[] getBytes();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user