1 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
\r
2 package org.opendaylight.openflowjava.protocol.impl.serialization;
\r
4 import java.util.HashMap;
\r
5 import java.util.Map;
\r
7 import org.opendaylight.openflowjava.protocol.impl.core.OFVersionDetector;
\r
8 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.HelloInputMessageFactory;
\r
9 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloInput;
\r
10 import org.opendaylight.yangtools.yang.binding.DataObject;
\r
13 * @author michal.polkorab
\r
16 public class EncoderTable {
\r
18 private static final short OF13 = OFVersionDetector.OF13_VERSION_ID;
\r
19 private static EncoderTable instance;
\r
20 private Map<MessageTypeKey<?>, OFSerializer<?>> table;
\r
23 private EncoderTable() {
\r
28 * @return singleton instance
\r
30 public static EncoderTable getInstance() {
\r
31 if (instance == null) {
\r
32 synchronized (EncoderTable.class) {
\r
33 instance = new EncoderTable();
\r
41 * Encoder table provisioning
\r
43 public void init() {
\r
44 table = new HashMap<>();
\r
45 table.put(new MessageTypeKey<>(OF13, HelloInput.class), HelloInputMessageFactory.getInstance());
\r
50 * @return encoder for current type of message (msgTypeKey)
\r
52 @SuppressWarnings("unchecked")
\r
53 public <E extends DataObject> OFSerializer<E> getEncoder(MessageTypeKey<E> msgTypeKey) {
\r
54 return (OFSerializer<E>) table.get(msgTypeKey);
\r