/*
* 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.OFGeneralSerializer;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
import org.opendaylight.openflowjava.protocol.api.keys.MatchEntrySerializerKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ExperimenterClass;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchField;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OxmClassBase;
/**
* @author michal.polkorab
* @param <C> OXM class
*/
public class MatchEntrySerializerRegistryHelper<C extends OxmClassBase> {
private short version;
private Class<C> generalClass;
private SerializerRegistry serializerRegistry;
/**
* @param version Openflow wire version
* @param generalClass
* @param serializerRegistry
*/
public MatchEntrySerializerRegistryHelper(short version, Class<C> generalClass,
SerializerRegistry serializerRegistry) {
this.version = version;
this.generalClass = generalClass;
this.serializerRegistry = serializerRegistry;
}
/**
* Registers given serializer
* @param specificClass
* @param serializer
*/
public <F extends MatchField> void registerSerializer(
Class<F> specificClass, OFGeneralSerializer serializer) {
MatchEntrySerializerKey<?, ?> key = new MatchEntrySerializerKey<>(version, generalClass, specificClass);
key.setExperimenterId(null);
serializerRegistry.registerSerializer(key, serializer);
}
/**
* Registers ExperimenterClass type match serializer
* @param specificClass
* @param serializer
*/
public <F extends MatchField> void registerExperimenterSerializer(
Class<F> specificClass, long expId, OFGeneralSerializer serializer) {
MatchEntrySerializerKey<?, ?> key = new MatchEntrySerializerKey<>(version, ExperimenterClass.class, specificClass);
key.setExperimenterId(expId);
serializerRegistry.registerSerializer(key, serializer);
}
}