Advertisement
Guest User

Untitled

a guest
Dec 4th, 2016
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. package ru.pb.battle.network.client;
  2.  
  3. import io.netty.buffer.ByteBuf;
  4. import io.netty.buffer.Unpooled;
  5. import io.netty.channel.ChannelHandlerContext;
  6. import io.netty.channel.SimpleChannelInboundHandler;
  7. import io.netty.channel.socket.DatagramPacket;
  8. import org.slf4j.Logger;
  9. import org.slf4j.LoggerFactory;
  10. import ru.pb.battle.controllers.RoomController;
  11. import ru.pb.battle.models.Player;
  12. import ru.pb.battle.models.Room;
  13. import ru.pb.battle.utils.ByteBuffer;
  14.  
  15. import java.net.InetSocketAddress;
  16.  
  17. /**
  18. * @author DarkSkeleton
  19. */
  20. public class BattleClientConnection extends SimpleChannelInboundHandler<DatagramPacket>
  21. {
  22.  
  23. private static final Logger log = LoggerFactory.getLogger(BattleClientConnection.class);
  24.  
  25. @Override
  26. protected void channelRead0(ChannelHandlerContext ctx, DatagramPacket msg) throws Exception {
  27. ByteBuf bb = msg.content();
  28. byte opcode = bb.readByte();
  29. switch (opcode)
  30. {
  31. default: System.out.println("Unk: " + opcode); break;
  32.  
  33. case 65:
  34. {
  35. Room room = RoomController.getInstance().getRoom(msg.sender().getAddress());
  36. if(room != null)
  37. {
  38. if(room.inetAddress.equals(msg.sender().getAddress()))
  39. {
  40. ByteBuffer _buffer = new ByteBuffer();
  41. _buffer.writeC((byte)66);
  42. _buffer.writeC((byte) 0);
  43. _buffer.writeB(new byte[5]);
  44. _buffer.writeC((byte) 0x0b);
  45. _buffer.writeB(new byte[3]);
  46. room.isConnected = true;
  47. room.port = msg.sender().getPort();
  48. ctx.writeAndFlush(new DatagramPacket(Unpooled.copiedBuffer(_buffer.getData(), 0, _buffer.getData().length), msg.sender()));
  49. }
  50. else
  51. {
  52. Player player = RoomController.getInstance().getPlayer(msg.sender().getAddress());
  53. if (player != null)
  54. {
  55. ByteBuffer _buffer = new ByteBuffer();
  56. _buffer.writeC((byte)66);
  57. _buffer.writeC((byte) 0);
  58. _buffer.writeB(new byte[5]);
  59. _buffer.writeC((byte) 0x0b);
  60. _buffer.writeB(new byte[3]);
  61. player.isConnected = true;
  62. player.playerPort = msg.sender().getPort();
  63. ctx.writeAndFlush(new DatagramPacket(Unpooled.copiedBuffer(_buffer.getData(), 0, _buffer.getData().length), msg.sender()));
  64. }
  65. }
  66. }
  67. }
  68. break;
  69. }
  70.  
  71. }
  72.  
  73. @Override
  74. public void exceptionCaught(
  75. ChannelHandlerContext ctx, Throwable cause)
  76. throws Exception {
  77. cause.printStackTrace();
  78. // We don't close the channel because we can keep serving requests.
  79. }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement