646f4e0815d69dc087de77817b5bc5b41b34c523
[openflowjava.git] / openflow-protocol-api / src / main / java / org / opendaylight / openflowjava / protocol / api / extensibility / DeserializerRegistry.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  * @author michal.polkorab\r
13  *\r
14  */\r
15 public interface DeserializerRegistry {\r
16 \r
17     /**\r
18      * Initializes deserializers\r
19      */\r
20     void init();\r
21 \r
22     /**\r
23      * @param key used for deserializer lookup\r
24      * @return deserializer found\r
25      */\r
26     <SERIALIZERTYPE extends OFGeneralDeserializer>\r
27             SERIALIZERTYPE getDeserializer(MessageCodeKey key);\r
28 \r
29     /**\r
30      * Registers deserializer.\r
31      * Throws IllegalStateException when there is\r
32      * a deserializer already registered under given key.\r
33      * \r
34      * If the deserializer implements {@link DeserializerRegistryInjector} interface,\r
35      * the deserializer is injected with DeserializerRegistry instance.\r
36      * \r
37      * @param key used for deserializer lookup\r
38      * @param deserializer deserializer instance\r
39      */\r
40     void registerDeserializer(MessageCodeKey key,\r
41             OFGeneralDeserializer deserializer);\r
42 \r
43     /**\r
44      * Unregisters deserializer\r
45      * @param key used for deserializer lookup\r
46      * @param deserializer deserializer instance\r
47      * @return true if deserializer was removed,\r
48      *  false if no deserializer was found under specified key\r
49      */\r
50     boolean unregisterDeserializer(MessageCodeKey key);\r
51 }\r