1 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
\r
2 package org.openflow.lib.deserialization;
\r
4 import java.util.HashMap;
\r
5 import java.util.Map;
\r
7 import org.openflow.deserialization.factories.EchoReplyMessageFactory;
\r
8 import org.openflow.deserialization.factories.EchoRequestMessageFactory;
\r
9 import org.openflow.deserialization.factories.FeaturesReplyMessageFactory;
\r
10 import org.openflow.deserialization.factories.HelloMessageFactory;
\r
11 import org.openflow.lib.OfVersionDetector;
\r
14 * @author michal.polkorab
\r
17 public class DecoderTable {
\r
19 private static final short OF13 = OfVersionDetector.OF13_VERSION_ID;
\r
20 private Map<MessageTypeCodeKey, OfDeserializer<?>> table;
\r
21 private static DecoderTable instance;
\r
24 private DecoderTable() {
\r
29 * @return singleton instance
\r
31 public static DecoderTable getInstance() {
\r
32 if (instance == null) {
\r
33 synchronized (DecoderTable.class) {
\r
34 instance = new DecoderTable();
\r
42 * Decoder table provisioning
\r
44 public void init() {
\r
45 table = new HashMap<>();
\r
46 table.put(new MessageTypeCodeKey(OF13, (short) 0), HelloMessageFactory.getInstance());
\r
47 table.put(new MessageTypeCodeKey(OF13, (short) 2), EchoRequestMessageFactory.getInstance());
\r
48 table.put(new MessageTypeCodeKey(OF13, (short) 3), EchoReplyMessageFactory.getInstance());
\r
49 table.put(new MessageTypeCodeKey(OF13, (short) 6), FeaturesReplyMessageFactory.getInstance());
\r
54 * @return decoder for given message types
\r
56 public OfDeserializer<?> getDecoder(MessageTypeCodeKey msgTypeKey) {
\r
57 return table.get(msgTypeKey);
\r