Extracted (De)SerializerExtensionProvider interfaces from SwitchConnectionProvider
[openflowjava.git] / openflow-protocol-api / src / main / java / org / opendaylight / openflowjava / protocol / api / extensibility / SerializerRegistry.java
1 /*\r
2  * Copyright (c) 2013 Pantheon Technologies s.r.o. and others.  All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 package org.opendaylight.openflowjava.protocol.api.extensibility;\r
9 \r
10 \r
11 \r
12 \r
13 /**\r
14  * Stores and handles serializers \r
15  * @author michal.polkorab\r
16  *\r
17  */\r
18 public interface SerializerRegistry {\r
19 \r
20     /**\r
21      * Serializer registry provisioning\r
22      */\r
23     public void init();\r
24 \r
25     /**\r
26      * @param msgTypeKey lookup key\r
27      * @return serializer or NullPointerException if no serializer was found\r
28      */\r
29     public <KEY_TYPE, SERIALIZER_TYPE extends OFGeneralSerializer> SERIALIZER_TYPE \r
30         getSerializer(MessageTypeKey<KEY_TYPE> msgTypeKey);\r
31 \r
32     /**\r
33      * Registers serializer\r
34      * @param key used for serializer lookup\r
35      * @param serializer serializer implementation\r
36      */\r
37     public <KEY_TYPE> void registerSerializer(MessageTypeKey<KEY_TYPE> key,\r
38             OFGeneralSerializer serializer);\r
39 \r
40     /**\r
41      * Unregisters serializer\r
42      * @param key used for serializer lookup\r
43      * @param serializer serializer implementation\r
44      * @return true if serializer was removed,\r
45      *  false if no serializer was found under specified key\r
46      */\r
47     public <KEY_TYPE> boolean unregisterSerializer(MessageTypeKey<KEY_TYPE> key);\r
48 }\r