Advertisement
Guest User

Untitled

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