mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2026-08-04 02:01:01 -06:00
46 lines
No EOL
1 KiB
Java
46 lines
No EOL
1 KiB
Java
package ms.net.event;
|
|
|
|
import java.nio.ByteBuffer;
|
|
|
|
import ms.net.IoSession;
|
|
import ms.net.IoWriteEvent;
|
|
import ms.net.packet.IoBuffer;
|
|
|
|
/**
|
|
* Handles world packet writing events.
|
|
* @author Emperor
|
|
*
|
|
*/
|
|
public final class PacketWriteEvent extends IoWriteEvent {
|
|
|
|
|
|
/**
|
|
* Constructs a new {@code PacketWriteEvent} {@code Object}.
|
|
* @param session The I/O session.
|
|
* @param context The packet context.
|
|
*/
|
|
public PacketWriteEvent(IoSession session, Object context) {
|
|
super(session, context);
|
|
}
|
|
|
|
@Override
|
|
public void write(IoSession session, Object context) {
|
|
IoBuffer b = (IoBuffer) context;
|
|
int size = b.toByteBuffer().position();
|
|
ByteBuffer buffer = ByteBuffer.allocate(1 + size + b.getHeader().ordinal());
|
|
buffer.put((byte) b.opcode());
|
|
switch (b.getHeader()) {
|
|
case NORMAL:
|
|
break;
|
|
case BYTE:
|
|
buffer.put((byte) size);
|
|
break;
|
|
case SHORT:
|
|
buffer.putShort((short) size);
|
|
break;
|
|
}
|
|
buffer.put((ByteBuffer) b.toByteBuffer().flip());
|
|
session.queue((ByteBuffer) buffer.flip());
|
|
}
|
|
|
|
} |