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;
|
this.byteBuf = byteBuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public short getHeader() {
|
||||||
|
return byteBuf.getShortLE(0);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public byte[] getBytes() {
|
public byte[] getBytes() {
|
||||||
// TODO
|
// TODO implement
|
||||||
return null;
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -51,15 +56,15 @@ public class ByteBufInPacket implements InPacket {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public byte[] read(int numberOfBytes) {
|
public byte[] readBytes(int bytesToRead) {
|
||||||
byte[] bytes = new byte[numberOfBytes];
|
byte[] bytes = new byte[bytesToRead];
|
||||||
byteBuf.readBytes(bytes);
|
byteBuf.readBytes(bytes);
|
||||||
return bytes;
|
return bytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void skip(int numberOfBytes) {
|
public void skip(int bytesToSkip) {
|
||||||
byteBuf.skipBytes(numberOfBytes);
|
byteBuf.skipBytes(bytesToSkip);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,11 +1,88 @@
|
|||||||
package net.packet;
|
package net.packet;
|
||||||
|
|
||||||
import io.netty.buffer.ByteBuf;
|
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 {
|
public class ByteBufOutPacket implements OutPacket {
|
||||||
private final ByteBuf byteBuf;
|
private final ByteBuf byteBuf;
|
||||||
|
|
||||||
public ByteBufOutPacket(ByteBuf byteBuf) {
|
public ByteBufOutPacket(SendOpcode op) {
|
||||||
|
ByteBuf byteBuf = Unpooled.buffer();
|
||||||
|
byteBuf.writeShortLE((short) op.getValue());
|
||||||
this.byteBuf = byteBuf;
|
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();
|
long readLong();
|
||||||
Point readPoint();
|
Point readPoint();
|
||||||
String readString();
|
String readString();
|
||||||
byte[] read(int numberOfBytes);
|
byte[] readBytes(int bytesToRead);
|
||||||
void skip(int numberOfBytes);
|
void skip(int numberOfBytes);
|
||||||
int available();
|
int available();
|
||||||
void seek(int byteOffset);
|
void seek(int byteOffset);
|
||||||
|
|||||||
@@ -1,4 +1,20 @@
|
|||||||
package net.packet;
|
package net.packet;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
import java.nio.charset.Charset;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
public interface OutPacket extends Packet {
|
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;
|
package net.packet;
|
||||||
|
|
||||||
public interface Packet {
|
public interface Packet {
|
||||||
|
short getHeader();
|
||||||
byte[] getBytes();
|
byte[] getBytes();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user