Advertisement
Guest User

Untitled

a guest
Apr 26th, 2015
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.26 KB | None | 0 0
  1. package org.rse.network.codec;
  2.  
  3. import io.netty.buffer.ByteBuf;
  4. import io.netty.channel.ChannelHandlerContext;
  5. import io.netty.handler.codec.ByteToMessageDecoder;
  6.  
  7. import java.util.List;
  8.  
  9. import org.rse.network.packets.incoming.Incoming;
  10.  
  11. public final class RS2GameDecoder extends ByteToMessageDecoder {
  12.  
  13.     private int opcode = -1;
  14.  
  15.     private int size = -1;
  16.  
  17.     @Override
  18.     protected void decode(ChannelHandlerContext ctx, ByteBuf buffer, List<Object> out) throws Exception {
  19.         if (opcode == -1) {
  20.             if (buffer.readableBytes() >= 1) {
  21.                 opcode = buffer.readByte() & 0xFF;
  22.                 size = Incoming.SIZES[opcode];
  23.             } else {
  24.                 return;
  25.             }
  26.         }
  27.         switch (size) {
  28.         case -1:
  29.             if (buffer.readableBytes() < 1)
  30.                 return;
  31.             size = buffer.readByte() & 0xff;
  32.             break;
  33.         case -2:
  34.             if (buffer.readableBytes() < 2)
  35.                 return;
  36.             size = buffer.readShort() & 0xffff;
  37.             break;
  38.         }
  39.         if (buffer.readableBytes() >= size) {
  40.             if (Incoming.isIgnored(opcode)) {
  41.                 buffer.skipBytes(size);
  42.                 opcode = size = -1;
  43.                 return;
  44.             }
  45.             byte[] incomingPayload = new byte[size];
  46.             buffer.readBytes(incomingPayload);
  47.             try {
  48.                 out.add(new Message(opcode, incomingPayload));
  49.                 return;
  50.             } finally {
  51.                 opcode = -1;
  52.                 size = -1;
  53.             }
  54.         }
  55.     }
  56.  
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement