Merge "add basic lib - plugin communication"
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / openflow / lib / serialization / SerializationFactory.java
1 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */\r
2 package org.openflow.lib.serialization;\r
3 \r
4 import io.netty.buffer.ByteBuf;\r
5 \r
6 import org.opendaylight.yangtools.yang.binding.DataObject;\r
7 \r
8 /**\r
9  * @author michal.polkorab\r
10  *\r
11  */\r
12 public class SerializationFactory {\r
13 \r
14     /**\r
15      * Transforms POJO message into ByteBuf\r
16      * @param version version used for encoding received message\r
17      * @param out ByteBuf for storing and sending transformed message\r
18      * @param message POJO message\r
19      */\r
20     public static <E extends DataObject> void messageToBuffer(short version, ByteBuf out, E message) {\r
21         @SuppressWarnings("unchecked")\r
22         MessageTypeKey<E> msgTypeKey = new MessageTypeKey<E>(version, (Class<E>) message.getClass());\r
23         OfSerializer<E> encoder = EncoderTable.getInstance().getEncoder(msgTypeKey);\r
24         encoder.messageToBuffer(version, out, message);\r
25         /* \r
26            Type   Message\r
27             0: HELLO\r
28             1: ERROR\r
29             2: ECHO_REQUEST\r
30             3: ECHO_REPLY\r
31             4: EXPERIMENTER\r
32             5: FEATURES_REQUEST\r
33             6: FEATURES_REPLY\r
34             7: GET_CONFIG_REQUEST\r
35             8: GET_CONFIG_REPLY\r
36             9: SET_CONFIG\r
37             10: PACKET_IN\r
38             11: FLOW_REMOVED\r
39             12: PORT_STATUS\r
40             13: PACKET_OUT\r
41             14: FLOW_MOD\r
42             15: GROUP_MOD\r
43             16: PORT_MOD\r
44             17: TABLE_MOD\r
45             18: MULTIPART_REQUEST\r
46             19: MULTIPART_REPLY\r
47             20: BARRIER_REQUEST\r
48             21: BARRIER_REPLY\r
49             22: QUEUE_GET_CONFIG_REQUEST\r
50             23: QUEUE_GET_CONFIG_REPLY\r
51             24: ROLE_REQUEST\r
52             25: ROLE_REPLY    \r
53             26: GET_ASYNC_REQUEST\r
54             27: GET_ASYNC_REPLY\r
55             28: SET_ASYNC\r
56             29: METER_MOD\r
57         */\r
58     }\r
59 }\r