1
0
mirror of https://github.com/Rogiel/l2jserver2 synced 2025-12-08 08:23:11 +00:00

Change-Id: Ia7c6094789fa7b0d3cc6c136992b8081efd3c5e5

This commit is contained in:
rogiel
2011-04-28 23:12:09 -03:00
parent 54ef3c7fa2
commit 2749539f87
28 changed files with 124 additions and 27 deletions

View File

@@ -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;