1. 程式人生 > >Netty學習筆記(一)二進位制流協議【轉】

Netty學習筆記(一)二進位制流協議【轉】

public abstract class KaMessage {

protected short commandId;

protected int userId;

public static final short HEADLENGTH = 6;

public static final short REQ = 0x0001;

public static final short RES = 0x1001;

public void encode(ByteBuffer buffer) {

buffer.putInt(userId);

subencode(buffer);

}

public void decode(ByteBuffer buffer) {

userId = buffer.getInt();

subdecode(buffer);

}

public abstract short length();

public abstract void subencode(ByteBuffer buffer);

public abstract void subdecode(ByteBuffer buffer);

public int getUserId() {

return userId;

}

public void setUserId(int userId) {

this.userId = userId;

}

public short getCommandId() {

return commandId;

}

}

public class KaRes extends KaMessage {

private short result = 200;

public KaRes() {

commandId = KaMessage.RES;

}

@Override

public short length() {

// TODO Auto-generated method stub

short len = KaMessage.HEADLENGTH;

len += 2;

return len;

}

@Override

public void subencode(ByteBuffer buffer) {

// TODO Auto-generated method stub

buffer.putShort(result);

}

@Override

public void subdecode(ByteBuffer buffer) {

// TODO Auto-generated method stub

result = buffer.getShort();

}

@Override

public String toString() {

// TODO Auto-generated method stub

StringBuffer sb = new StringBuffer();

sb.append(super.toString());

sb.append(" - result: " + result);

return sb.toString();

}

public short getResult() {

return result;

}

public void setResult(short result) {

this.result = result;

}

}