/** * Create default empty group mod input builder * Use this method, if result from convertor is empty. * * @param version Openflow version * @return default empty group mod input builder */ public static GroupModInputBuilder defaultResult(short version) { return new GroupModInputBuilder() .setVersion(version); }
@Override public GroupModInput deserialize(ByteBuf rawMessage) { GroupModInputBuilder builder = new GroupModInputBuilder(); builder.setVersion((short) EncodeConstants.OF13_VERSION_ID); builder.setXid(rawMessage.readUnsignedInt()); builder.setCommand(GroupModCommand.forValue(rawMessage.readUnsignedShort())); builder.setType(GroupType.forValue(rawMessage.readUnsignedByte())); rawMessage.skipBytes(PADDING); builder.setGroupId(new GroupId(rawMessage.readUnsignedInt())); List<BucketsList> bucketsList = new ArrayList<>(); while (rawMessage.readableBytes() > 0) { BucketsListBuilder bucketsBuilder = new BucketsListBuilder(); int bucketsLength = rawMessage.readUnsignedShort(); bucketsBuilder.setWeight(rawMessage.readUnsignedShort()); bucketsBuilder.setWatchPort(new PortNumber(rawMessage.readUnsignedInt())); bucketsBuilder.setWatchGroup(rawMessage.readUnsignedInt()); rawMessage.skipBytes(PADDING_IN_BUCKETS_HEADER); CodeKeyMaker keyMaker = CodeKeyMakerFactory.createActionsKeyMaker(EncodeConstants.OF13_VERSION_ID); List<Action> actions = ListDeserializer.deserializeList(EncodeConstants.OF13_VERSION_ID, bucketsLength - BUCKETS_HEADER_LENGTH, rawMessage, keyMaker, registry); bucketsBuilder.setAction(actions); bucketsList.add(bucketsBuilder.build()); } builder.setBucketsList(bucketsList); return builder.build(); }
@Override public GroupModInputBuilder convert(Group source, VersionDatapathIdConvertorData data) { GroupModInputBuilder groupModInputBuilder = new GroupModInputBuilder(); if (source instanceof AddGroupInput) { groupModInputBuilder.setCommand(GroupModCommand.OFPGCADD); } else if (source instanceof RemoveGroupInput) { groupModInputBuilder.setCommand(GroupModCommand.OFPGCDELETE); } else if (source instanceof UpdatedGroup) { groupModInputBuilder.setCommand(GroupModCommand.OFPGCMODIFY); groupModInputBuilder.setType(GroupType.OFPGTALL); groupModInputBuilder.setType(GroupType.OFPGTSELECT); groupModInputBuilder.setType(GroupType.OFPGTINDIRECT); groupModInputBuilder.setType(GroupType.OFPGTFF); groupModInputBuilder.setGroupId(new GroupId(source.getGroupId().getValue())); if (groupModInputBuilder.getCommand() != GroupModCommand.OFPGCDELETE) { if ((source.getBuckets() != null) && (source.getBuckets().getBucket().size() != 0)) { groupModInputBuilder.setBucketsList(bucketLists); groupModInputBuilder.setVersion(data.getVersion()); return groupModInputBuilder;