Arcturus-Community/src/main/java/com/eu/habbo/threading/runnables/ChannelReadHandler.java

46 lines
1.6 KiB
Java
Raw Normal View History

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;
2019-05-26 20:14:53 +02:00
public class ChannelReadHandler implements Runnable {
2018-07-06 15:30:00 +02:00
private final ChannelHandlerContext ctx;
private final Object msg;
2019-05-26 20:14:53 +02:00
public ChannelReadHandler(ChannelHandlerContext ctx, Object msg) {
2018-07-06 15:30:00 +02:00
this.ctx = ctx;
this.msg = msg;
}
2019-05-26 20:14:53 +02:00
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
2019-05-26 20:14:53 +02:00
if (client != null) {
2019-03-18 02:22:00 +01:00
int count = 0;
int timestamp = Emulator.getIntUnixTimestamp();
2019-05-26 20:14:53 +02:00
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;
2019-05-26 20:14:53 +02:00
} else {
2018-11-17 14:28:00 +01:00
count = client.incomingPacketCounter.getOrDefault(header, 0);
}
2019-03-18 02:22:00 +01:00
2019-05-26 20:14:53 +02:00
if (count <= 10) {
2019-03-18 02:22:00 +01:00
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();
}
}