blob: c07d2895977ead7eb7bc270d14ca14398c126628 [file] [log] [blame]
Madan Jampaniab6d3112014-10-02 16:30:14 -07001package org.onlab.netty;
2
3import org.onlab.util.KryoPool;
Madan Jampaniab6d3112014-10-02 16:30:14 -07004
Madan Jampani86ed0552014-10-03 16:45:42 -07005import java.nio.ByteBuffer;
Madan Jampaniab6d3112014-10-02 16:30:14 -07006import java.util.ArrayList;
7import java.util.HashMap;
8
9/**
10 * Kryo Serializer.
11 */
12public class KryoSerializer implements Serializer {
13
Madan Jampaniab6d3112014-10-02 16:30:14 -070014 private KryoPool serializerPool;
15
16 public KryoSerializer() {
17 setupKryoPool();
18 }
19
20 /**
21 * Sets up the common serialzers pool.
22 */
23 protected void setupKryoPool() {
24 // FIXME Slice out types used in common to separate pool/namespace.
25 serializerPool = KryoPool.newBuilder()
26 .register(ArrayList.class,
27 HashMap.class,
Madan Jampani86ed0552014-10-03 16:45:42 -070028 ArrayList.class,
29 InternalMessage.class,
30 Endpoint.class
Madan Jampaniab6d3112014-10-02 16:30:14 -070031 )
32 .build()
33 .populate(1);
34 }
35
36
37 @Override
Madan Jampani86ed0552014-10-03 16:45:42 -070038 public <T> T decode(byte[] data) {
Madan Jampaniab6d3112014-10-02 16:30:14 -070039 return serializerPool.deserialize(data);
40 }
41
42 @Override
43 public byte[] encode(Object payload) {
44 return serializerPool.serialize(payload);
45 }
Madan Jampani86ed0552014-10-03 16:45:42 -070046
47 @Override
48 public <T> T deserialize(ByteBuffer buffer) {
49 return serializerPool.deserialize(buffer);
50 }
51
52 @Override
53 public void serialize(Object obj, ByteBuffer buffer) {
54 serializerPool.serialize(obj, buffer);
55 }
Yuta HIGUCHI92626c02014-10-06 15:46:18 -070056}