Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.pb.battle.network.client;
- import io.netty.buffer.ByteBuf;
- import io.netty.buffer.Unpooled;
- import io.netty.channel.ChannelHandlerContext;
- import io.netty.channel.SimpleChannelInboundHandler;
- import io.netty.channel.socket.DatagramPacket;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import ru.pb.battle.controllers.RoomController;
- import ru.pb.battle.models.Player;
- import ru.pb.battle.models.Room;
- import ru.pb.battle.utils.ByteBuffer;
- import java.net.InetSocketAddress;
- public class BattleClientConnection extends SimpleChannelInboundHandler<DatagramPacket>
- {
- private static final Logger log = LoggerFactory.getLogger(BattleClientConnection.class);
- @Override
- protected void channelRead0(ChannelHandlerContext ctx, DatagramPacket msg) throws Exception {
- ByteBuf bb = msg.content();
- byte opcode = bb.readByte();
- switch (opcode)
- {
- default: System.out.println("Unk: " + opcode); break;
- case 65:
- {
- Room room = RoomController.getInstance().getRoom(msg.sender().getAddress());
- if(room != null)
- {
- if(room.inetAddress.equals(msg.sender().getAddress()))
- {
- ByteBuffer _buffer = new ByteBuffer();
- _buffer.writeC((byte)66);
- _buffer.writeC((byte) 0);
- _buffer.writeB(new byte[5]);
- _buffer.writeC((byte) 0x0b);
- _buffer.writeB(new byte[3]);
- room.isConnected = true;
- room.port = msg.sender().getPort();
- ctx.writeAndFlush(new DatagramPacket(Unpooled.copiedBuffer(_buffer.getData(), 0, _buffer.getData().length), msg.sender()));
- }
- else
- {
- Player player = RoomController.getInstance().getPlayer(msg.sender().getAddress());
- if (player != null)
- {
- ByteBuffer _buffer = new ByteBuffer();
- _buffer.writeC((byte)66);
- _buffer.writeC((byte) 0);
- _buffer.writeB(new byte[5]);
- _buffer.writeC((byte) 0x0b);
- _buffer.writeB(new byte[3]);
- player.isConnected = true;
- player.playerPort = msg.sender().getPort();
- ctx.writeAndFlush(new DatagramPacket(Unpooled.copiedBuffer(_buffer.getData(), 0, _buffer.getData().length), msg.sender()));
- }
- }
- }
- }
- break;
- }
- }
- @Override
- public void exceptionCaught(
- ChannelHandlerContext ctx, Throwable cause)
- throws Exception {
- cause.printStackTrace();
- // We don't close the channel because we can keep serving requests.
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement