2018-07-06 15:30:00 +02:00
|
|
|
package com.eu.habbo.threading.runnables;
|
|
|
|
|
|
|
|
import com.eu.habbo.Emulator;
|
2018-10-07 00:28:00 +02:00
|
|
|
import com.eu.habbo.habbohotel.gameclients.GameClient;
|
2018-07-06 15:30:00 +02:00
|
|
|
import com.eu.habbo.habbohotel.gameclients.GameClientManager;
|
|
|
|
import com.eu.habbo.messages.ClientMessage;
|
|
|
|
import io.netty.buffer.ByteBuf;
|
|
|
|
import io.netty.buffer.Unpooled;
|
|
|
|
import io.netty.channel.ChannelHandlerContext;
|
|
|
|
|
|
|
|
public class ChannelReadHandler implements Runnable
|
|
|
|
{
|
|
|
|
private final ChannelHandlerContext ctx;
|
|
|
|
private final Object msg;
|
|
|
|
|
|
|
|
public ChannelReadHandler(ChannelHandlerContext ctx, Object msg)
|
|
|
|
{
|
|
|
|
this.ctx = ctx;
|
|
|
|
this.msg = msg;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void run()
|
|
|
|
{
|
2019-03-18 02:22:00 +01:00
|
|
|
ByteBuf m = (ByteBuf) this.msg;
|
2018-07-06 15:30:00 +02:00
|
|
|
int length = m.readInt();
|
|
|
|
short header = m.readShort();
|
2019-03-18 02:22:00 +01:00
|
|
|
GameClient client = this.ctx.channel().attr(GameClientManager.CLIENT).get();
|
2018-11-17 14:28:00 +01:00
|
|
|
|
|
|
|
if (client != null)
|
2018-10-07 00:28:00 +02:00
|
|
|
{
|
2019-03-18 02:22:00 +01:00
|
|
|
int count = 0;
|
|
|
|
int timestamp = Emulator.getIntUnixTimestamp();
|
|
|
|
if (timestamp - client.lastPacketCounterCleared > 1)
|
2018-11-17 14:28:00 +01:00
|
|
|
{
|
|
|
|
client.incomingPacketCounter.clear();
|
2019-03-18 02:22:00 +01:00
|
|
|
client.lastPacketCounterCleared = timestamp;
|
2018-11-17 14:28:00 +01:00
|
|
|
} else
|
|
|
|
{
|
|
|
|
count = client.incomingPacketCounter.getOrDefault(header, 0);
|
|
|
|
}
|
2019-03-18 02:22:00 +01:00
|
|
|
|
|
|
|
if (count <= 10)
|
|
|
|
{
|
|
|
|
count++;
|
|
|
|
client.incomingPacketCounter.put((int) header, count);
|
|
|
|
ByteBuf body = Unpooled.wrappedBuffer(m.readBytes(m.readableBytes()));
|
|
|
|
Emulator.getGameServer().getPacketManager().handlePacket(client, new ClientMessage(header, body));
|
|
|
|
body.release();
|
|
|
|
}
|
2018-10-07 00:28:00 +02:00
|
|
|
}
|
2018-07-06 15:30:00 +02:00
|
|
|
m.release();
|
|
|
|
}
|
|
|
|
}
|