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;
}
}