mirror of
https://github.com/Rogiel/l2jserver2
synced 2025-12-08 08:23:11 +00:00
Change-Id: Ia7c6094789fa7b0d3cc6c136992b8081efd3c5e5
This commit is contained in:
@@ -5,32 +5,49 @@ import org.jboss.netty.channel.Channel;
|
||||
import org.jboss.netty.channel.ChannelHandlerContext;
|
||||
import org.jboss.netty.handler.codec.oneone.OneToOneDecoder;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Injector;
|
||||
import com.l2jserver.game.net.packet.ClientPacket;
|
||||
import com.l2jserver.game.net.packet.client.ProtocolVersionPacket;
|
||||
import com.l2jserver.service.logging.Logger;
|
||||
import com.l2jserver.service.logging.LoggingService;
|
||||
|
||||
public class Lineage2PacketReader extends OneToOneDecoder {
|
||||
private final Injector injector;
|
||||
private final Logger logger;
|
||||
|
||||
@Inject
|
||||
public Lineage2PacketReader(Injector injector, LoggingService logging) {
|
||||
this.injector = injector;
|
||||
this.logger = logging.getLogger(Lineage2PacketReader.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Object decode(ChannelHandlerContext ctx, Channel channel,
|
||||
Object msg) throws Exception {
|
||||
if (!(msg instanceof ChannelBuffer))
|
||||
return msg;
|
||||
final ChannelBuffer buffer = (ChannelBuffer) msg;
|
||||
final ClientPacket packet = getPacket(buffer);
|
||||
final ClientPacket packet = createPacket(getPacketClass(buffer));
|
||||
if (packet == null)
|
||||
return null;
|
||||
packet.read(buffer);
|
||||
return packet;
|
||||
}
|
||||
|
||||
private ClientPacket getPacket(ChannelBuffer buffer) {
|
||||
private ClientPacket createPacket(Class<? extends ClientPacket> type) {
|
||||
return injector.getInstance(type);
|
||||
}
|
||||
|
||||
private Class<? extends ClientPacket> getPacketClass(ChannelBuffer buffer) {
|
||||
final short opcode = buffer.readUnsignedByte();
|
||||
switch (opcode) {
|
||||
case ProtocolVersionPacket.OPCODE:
|
||||
return new ProtocolVersionPacket();
|
||||
return ProtocolVersionPacket.class;
|
||||
case 0x2b:
|
||||
return null;
|
||||
default:
|
||||
System.out.println("Unk: " + opcode);
|
||||
logger.info("Unknown opcode: " + opcode);
|
||||
break;
|
||||
}
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user