Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.tyluur.network.decoders;
- import java.util.NoSuchElementException;
- import org.jboss.netty.buffer.ChannelBuffer;
- import org.jboss.netty.channel.Channel;
- import org.jboss.netty.channel.ChannelHandlerContext;
- import org.jboss.netty.handler.codec.frame.FrameDecoder;
- import com.tyluur.network.packet.OutgoingPacket;
- import com.tyluur.utility.Constants;
- /**
- * @author Tykuur
- */
- public class ClientDecoder extends FrameDecoder {
- /**
- * The opcode sent by the client to signal the file request start.
- */
- private static final int FILE_REQUEST = 15,
- /**
- * The opcode sent to the server to initiate login.
- */
- LOGIN_REQUEST = 14;
- @Override
- protected Object decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer) throws Exception {
- try {
- ctx.getPipeline().remove(this);
- } catch (NoSuchElementException e) { }
- int opcode = buffer.readByte() & 0xFF;
- OutgoingPacket response = new OutgoingPacket(null, opcode);
- switch(opcode) {
- case FILE_REQUEST:
- int revision = buffer.readInt();
- if (revision != Constants.REVISION) {
- response.put(6);
- channel.close();
- } else {
- response.put(6);
- OutgoingPacket packet = new OutgoingPacket(null, 6).put(3);
- packet.get();
- if (4 <= buffer.readableBytes()) {
- buffer.skipBytes(4);
- for (final int key : Constants.UPDATE_KEYS) {
- response.put((byte) key);
- }
- return true;
- }
- }
- break;
- case LOGIN_REQUEST:
- break;
- }
- return null;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement