@Override public void writeTo(ChannelBuffer data) { super.writeTo(data); data.writeByte(command); data.writeByte(groupType); data.writeByte(actionNum); data.writeByte(0); data.writeInt(groupId); data.writeInt(counterId); data.writeZero(4); if (actionList == null) { data.writeZero(OFGlobal.OFP_MAX_ACTION_NUMBER_PER_GROUP * OFAction.MAXIMAL_LENGTH); } else { OFAction action; if (actionNum > actionList.size()) { throw new RuntimeException( "actionNum " + actionNum + " > actionList.size()" + actionList.size()); } int i; for (i = 0; i < actionNum && i < OFGlobal.OFP_MAX_ACTION_NUMBER_PER_GROUP; i++) { action = actionList.get(i); if (action == null) { data.writeZero(OFAction.MAXIMAL_LENGTH); } else { action.writeTo(data); if (action.getLength() < OFAction.MAXIMAL_LENGTH) { data.writeZero(OFAction.MAXIMAL_LENGTH - action.getLength()); } } } if (i < OFGlobal.OFP_MAX_ACTION_NUMBER_PER_GROUP) { data.writeZero((OFGlobal.OFP_MAX_ACTION_NUMBER_PER_GROUP - i) * OFAction.MAXIMAL_LENGTH); } } }
@Override public void writeTo(ByteBuffer data) { super.writeTo(data); data.putInt(0); // pad }