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