2 * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.openflowjava.protocol.impl.util;
10 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;
11 import org.opendaylight.openflowjava.protocol.api.extensibility.OFGeneralDeserializer;
12 import org.opendaylight.openflowjava.protocol.api.keys.MessageCodeKey;
13 import org.opendaylight.openflowjava.util.ExperimenterDeserializerKeyFactory;
16 * Helper class for deserializer registration.
17 * @author michal.polkorab
19 public class SimpleDeserializerRegistryHelper {
21 private short version;
22 private DeserializerRegistry registry;
25 * @param version wire protocol version
26 * @param deserializerRegistry registry to be filled with message deserializers
28 public SimpleDeserializerRegistryHelper(final short version, final DeserializerRegistry deserializerRegistry) {
29 this.version = version;
30 this.registry = deserializerRegistry;
34 * Register deserializer in registry. If deserializer supports more protocol versions assign actual one.
35 * @param code code / value to distinguish between deserializers
36 * @param deserializedObjectClass class of object that will be deserialized by given deserializer
37 * @param deserializer deserializer instance
39 public void registerDeserializer(final int code, final Class<?> deserializedObjectClass,
40 final OFGeneralDeserializer deserializer) {
41 registry.registerDeserializer(new MessageCodeKey(version, code, deserializedObjectClass), deserializer);
43 if (deserializer instanceof VersionAssignableFactory) {
44 ((VersionAssignableFactory) deserializer).assignVersion(version);
49 * Register experimenter deserializer in registry.
50 * @param experimenterId experimenterID of experimenter message
51 * @param type type of experimenter message
52 * @param deserializer deserializer instance
54 public void registerExperimenterDeserializer (final long experimenterId, final long type,
55 final OFGeneralDeserializer deserializer) {
56 registry.registerDeserializer(ExperimenterDeserializerKeyFactory
57 .createExperimenterMessageDeserializerKey(version, experimenterId, type), deserializer);
61 * Register experimenter error deserializer in registry.
62 * @param experimenterId experimenterID of experimenter message
63 * @param deserializer deserializer instance
65 public void registerExperimenterErrorDeserializer (final long experimenterId,
66 final OFGeneralDeserializer deserializer) {
67 registry.registerDeserializer(ExperimenterDeserializerKeyFactory
68 .createExperimenterErrorDeserializerKey(version, experimenterId), deserializer);