package com.meidusa.amoeba.monitor.packet; import java.io.UnsupportedEncodingException; import com.meidusa.amoeba.monitor.MonitorConstant; import com.meidusa.amoeba.net.packet.AbstractPacket; /** * @author struct */ public class MonitorCommandPacket extends AbstractPacket<MonitorPacketBuffer> implements MonitorConstant { public int lenght; public byte funType; public Object[] objects; @Override protected void init(MonitorPacketBuffer buffer) { buffer.setPosition(0); lenght = buffer.readInt(); funType = buffer.readByte(); if(funType<100 ){ }else{ // return ; } int count = buffer.readInt(); objects = new Object[count]; for(int i=0;i<count;i++){ objects[i] = buffer.readObject(); } } @Override protected void write2Buffer(MonitorPacketBuffer buffer) throws UnsupportedEncodingException { buffer.setPosition(HEADER_SIZE); if(objects != null && objects.length >0){ buffer.writeInt(objects.length); for(Object object : objects){ buffer.writeObject(object); } }else{ buffer.writeInt(0); } } @Override protected void afterPacketWritten(MonitorPacketBuffer buffer) { int position = buffer.getPosition(); lenght = position; buffer.setPosition(0); buffer.writeInt(lenght); buffer.writeByte((byte) funType); buffer.setPosition(position); } @Override protected int calculatePacketSize() { return 12; } @Override protected Class<MonitorPacketBuffer> getPacketBufferClass() { return MonitorPacketBuffer.class; } }