blob: cd34e0d1a84b4a141776ab3c47bdf72a9002687c [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 */
Yuta HIGUCHI993d7aa2014-10-06 22:54:38 -070012public class KryoSerializer implements PayloadSerializer {
Madan Jampaniab6d3112014-10-02 16:30:14 -070013
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
Yuta HIGUCHIcad78e92014-10-06 17:58:36 -070048 public <T> T decode(ByteBuffer buffer) {
Madan Jampani86ed0552014-10-03 16:45:42 -070049 return serializerPool.deserialize(buffer);
50 }
51
52 @Override
Yuta HIGUCHIcad78e92014-10-06 17:58:36 -070053 public void encode(Object obj, ByteBuffer buffer) {
Madan Jampani86ed0552014-10-03 16:45:42 -070054 serializerPool.serialize(obj, buffer);
55 }
Yuta HIGUCHI92626c02014-10-06 15:46:18 -070056}