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.api.extensibility;
10 import org.opendaylight.openflowjava.protocol.api.keys.MessageTypeKey;
13 * Stores and handles serializers. <br>
14 * K - {@link MessageTypeKey} parameter type,<br>
15 * S - returned serializer type
16 * @author michal.polkorab
18 public interface SerializerRegistry {
20 * Serializer registry provisioning.
25 * Gets the serializer for the given type.
27 * @param <K> input key type
28 * @param <S> type of resulting serializer
29 * @param msgTypeKey lookup key
30 * @return serializer or NullPointerException if no serializer was found
32 <K, S extends OFGeneralSerializer> S getSerializer(MessageTypeKey<K> msgTypeKey);
35 * Registers a serializer.
37 * Throws IllegalStateException when there is
38 * a serializer already registered under given key.
40 * If the serializer implements {@link SerializerRegistryInjector} interface,
41 * the serializer is injected with SerializerRegistry instance.
43 * @param <K> serializer key type
44 * @param key used for serializer lookup
45 * @param serializer serializer implementation
47 <K> void registerSerializer(MessageTypeKey<K> key,
48 OFGeneralSerializer serializer);
51 * Unregisters a serializer.
53 * @param <K> serializer key type
54 * @param key used for serializer lookup
55 * @return true if serializer was removed,
56 * false if no serializer was found under specified key
58 <K> boolean unregisterSerializer(MessageTypeKey<K> key);
61 * Checks if group add mod messages are enabled.
62 * @return true if group add mod messages are enabled
64 boolean isGroupAddModEnabled();
68 * @param isGroupAddModEnabled true if group add mod messages are enabled
70 void setGroupAddModConfig(boolean isGroupAddModEnabled);