/*
* 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.MatchEntryDeserializerKey;
import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants;
/**
* @author michal.polkorab
*
*/
public class MatchEntryDeserializerRegistryHelper {
private short version;
private DeserializerRegistry registry;
private int oxmClass;
/**
* @param version wire protocol version
* @param oxmClass oxm_class that will be used for match entry deserializer
* registration
* @param deserializerRegistry registry to be filled with message deserializers
*/
public MatchEntryDeserializerRegistryHelper(short version, int oxmClass,
DeserializerRegistry deserializerRegistry) {
this.version = version;
this.oxmClass = oxmClass;
this.registry = deserializerRegistry;
}
/**
* Registers match entry deserializer under provided oxmfield ()
* @param oxmField oxm_field value/code
* @param deserializer deserializer instance
*/
public void register(int oxmField, OFGeneralDeserializer deserializer) {
MatchEntryDeserializerKey key = new MatchEntryDeserializerKey(version, oxmClass, oxmField);
key.setExperimenterId(null);
registry.registerDeserializer(key, deserializer);
}
public void registerExperimenter(int oxmField, long expId, OFGeneralDeserializer deserializer) {
MatchEntryDeserializerKey key =
new MatchEntryDeserializerKey(version, OxmMatchConstants.EXPERIMENTER_CLASS, oxmField);
key.setExperimenterId(expId);
registry.registerDeserializer(key, deserializer);
}
}