|
|
|
@@ -1,13 +1,12 @@
|
|
|
|
package mc.protocol;
|
|
|
|
package mc.protocol.handler;
|
|
|
|
|
|
|
|
|
|
|
|
import io.netty.channel.ChannelHandlerContext;
|
|
|
|
import io.netty.channel.ChannelHandlerContext;
|
|
|
|
import io.netty.channel.SimpleChannelInboundHandler;
|
|
|
|
import io.netty.channel.SimpleChannelInboundHandler;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
|
|
import mc.protocol.NettyAttributes;
|
|
|
|
|
|
|
|
import mc.protocol.State;
|
|
|
|
import mc.protocol.packets.ClientSidePacket;
|
|
|
|
import mc.protocol.packets.ClientSidePacket;
|
|
|
|
import mc.protocol.event.EventBus;
|
|
|
|
|
|
|
|
import mc.protocol.pool.PacketPool;
|
|
|
|
|
|
|
|
import org.apache.commons.pool2.ObjectPool;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.io.IOException;
|
|
|
|
|
|
|
|
|
|
|
|
@@ -17,21 +16,11 @@ public class PacketInboundHandler extends SimpleChannelInboundHandler<ClientSide
|
|
|
|
|
|
|
|
|
|
|
|
private static final String CLIENT_FORCE_DISCONNECTED_IOEXCEPTION_MESSAGE_RU = "Программа на вашем хост-компьютере разорвала установленное подключение";
|
|
|
|
private static final String CLIENT_FORCE_DISCONNECTED_IOEXCEPTION_MESSAGE_RU = "Программа на вашем хост-компьютере разорвала установленное подключение";
|
|
|
|
|
|
|
|
|
|
|
|
private final ObjectPool<NettyConnectionContext> poolNettyConnectionContext;
|
|
|
|
|
|
|
|
private final PacketPool poolPackets;
|
|
|
|
|
|
|
|
private final EventBus eventBus;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
protected void channelRead0(ChannelHandlerContext ctx, ClientSidePacket packet) throws Exception {
|
|
|
|
protected void channelRead0(ChannelHandlerContext ctx, ClientSidePacket packet) {
|
|
|
|
State state = ctx.channel().attr(NetworkAttributes.STATE).get();
|
|
|
|
State state = ctx.channel().attr(NettyAttributes.STATE).get();
|
|
|
|
|
|
|
|
|
|
|
|
NettyConnectionContext context = poolNettyConnectionContext.borrowObject().setCtx(ctx);
|
|
|
|
//TODO process
|
|
|
|
eventBus.emit(state, context, packet);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!context.isUsedContext()) {
|
|
|
|
|
|
|
|
poolNettyConnectionContext.returnObject(context);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
poolPackets.returnObject(packet);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
@@ -39,7 +28,7 @@ public class PacketInboundHandler extends SimpleChannelInboundHandler<ClientSide
|
|
|
|
if (cause instanceof IOException && cause.getLocalizedMessage().equalsIgnoreCase(CLIENT_FORCE_DISCONNECTED_IOEXCEPTION_MESSAGE_RU)) {
|
|
|
|
if (cause instanceof IOException && cause.getLocalizedMessage().equalsIgnoreCase(CLIENT_FORCE_DISCONNECTED_IOEXCEPTION_MESSAGE_RU)) {
|
|
|
|
log.warn("Client '{}' force disconnected", ctx.channel().remoteAddress());
|
|
|
|
log.warn("Client '{}' force disconnected", ctx.channel().remoteAddress());
|
|
|
|
if (log.isTraceEnabled()) {
|
|
|
|
if (log.isTraceEnabled()) {
|
|
|
|
log.trace("", cause);
|
|
|
|
log.trace("{}", cause.getMessage(), cause);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
log.error("{}", cause.getMessage(), cause);
|
|
|
|
log.error("{}", cause.getMessage(), cause);
|