-
- private static MultipartReplyExperimenterCase setExperimenter(ByteBuf input) {
- MultipartReplyExperimenterCaseBuilder caseBuilder = new MultipartReplyExperimenterCaseBuilder();
- MultipartReplyExperimenterBuilder builder = new MultipartReplyExperimenterBuilder();
- builder.setExperimenter(input.readUnsignedInt());
- byte[] data = new byte[EncodeConstants.SIZE_OF_LONG_IN_BYTES];
- input.readBytes(data);
- builder.setData(data);
- caseBuilder.setMultipartReplyExperimenter(builder.build());
- return caseBuilder.build();
+
+ private MultipartReplyExperimenterCase setExperimenter(ByteBuf input) {
+ final long expId = input.readUnsignedInt();
+ final OFDeserializer<ExperimenterDataOfChoice> deserializer = registry.getDeserializer(ExperimenterDeserializerKeyFactory.createMultipartReplyVendorMessageDeserializerKey(
+ EncodeConstants.OF10_VERSION_ID, expId));
+
+ final MultipartReplyExperimenterBuilder mpExperimenterBld = new MultipartReplyExperimenterBuilder()
+ .setExperimenter(new ExperimenterId(expId))
+ .setExperimenterDataOfChoice(deserializer.deserialize(input));
+ final MultipartReplyExperimenterCaseBuilder mpReplyExperimenterCaseBld = new MultipartReplyExperimenterCaseBuilder()
+ .setMultipartReplyExperimenter(mpExperimenterBld.build());
+ return mpReplyExperimenterCaseBld.build();
+ }
+
+ @Override
+ public void injectDeserializerRegistry(DeserializerRegistry deserializerRegistry) {
+ registry = deserializerRegistry;