blob: b8efb51271c0a05abac8cae39efde1abfad7944d [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
Yuta HIGUCHIcdda17f2014-10-06 23:35:19 -07009//FIXME: Should be move out to test or app
Madan Jampaniab6d3112014-10-02 16:30:14 -070010/**
11 * Kryo Serializer.
12 */
Madan Jampani53e44e62014-10-07 12:39:51 -070013public class KryoSerializer {
Madan Jampaniab6d3112014-10-02 16:30:14 -070014
Madan Jampaniab6d3112014-10-02 16:30:14 -070015 private KryoPool serializerPool;
16
17 public KryoSerializer() {
18 setupKryoPool();
19 }
20
21 /**
22 * Sets up the common serialzers pool.
23 */
24 protected void setupKryoPool() {
25 // FIXME Slice out types used in common to separate pool/namespace.
26 serializerPool = KryoPool.newBuilder()
27 .register(ArrayList.class,
28 HashMap.class,
Madan Jampani86ed0552014-10-03 16:45:42 -070029 ArrayList.class,
30 InternalMessage.class,
Madan Jampani53e44e62014-10-07 12:39:51 -070031 Endpoint.class,
32 byte[].class
Madan Jampaniab6d3112014-10-02 16:30:14 -070033 )
34 .build()
35 .populate(1);
36 }
37
38
Madan Jampani86ed0552014-10-03 16:45:42 -070039 public <T> T decode(byte[] data) {
Madan Jampaniab6d3112014-10-02 16:30:14 -070040 return serializerPool.deserialize(data);
41 }
42
Madan Jampaniab6d3112014-10-02 16:30:14 -070043 public byte[] encode(Object payload) {
44 return serializerPool.serialize(payload);
45 }
Madan Jampani86ed0552014-10-03 16:45:42 -070046
Yuta HIGUCHIcad78e92014-10-06 17:58:36 -070047 public <T> T decode(ByteBuffer buffer) {
Madan Jampani86ed0552014-10-03 16:45:42 -070048 return serializerPool.deserialize(buffer);
49 }
50
Yuta HIGUCHIcad78e92014-10-06 17:58:36 -070051 public void encode(Object obj, ByteBuffer buffer) {
Madan Jampani86ed0552014-10-03 16:45:42 -070052 serializerPool.serialize(obj, buffer);
53 }
Yuta HIGUCHI92626c02014-10-06 15:46:18 -070054}