/*
* Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.openflowjava.protocol.impl.util;
import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFGeneralDeserializer;
import org.opendaylight.openflowjava.protocol.api.keys.MessageCodeKey;
/**
* Helper class for deserializer registration.
* @author michal.polkorab
*/
public class SimpleDeserializerRegistryHelper {
private short version;
private DeserializerRegistry registry;
/**
* @param version wire protocol version
* @param deserializerRegistry registry to be filled with message deserializers
*/
public SimpleDeserializerRegistryHelper(final short version, final DeserializerRegistry deserializerRegistry) {
this.version = version;
this.registry = deserializerRegistry;
}
/**
* Register deserializer in registry. If deserializer supports more protocol versions assign actual one.
* @param code code / value to distinguish between deserializers
* @param deserializedObjectClass class of object that will be deserialized by given deserializer
* @param deserializer deserializer instance
*/
public void registerDeserializer(final int code, final Class<?> deserializedObjectClass,
final OFGeneralDeserializer deserializer) {
registry.registerDeserializer(new MessageCodeKey(version, code, deserializedObjectClass), deserializer);
if (deserializer instanceof VersionAssignableFactory) {
((VersionAssignableFactory) deserializer).assignVersion(version);
}
}
}