blob: bc95fc69277746f9ebc7c1631cbd90bacc4190c6 [file] [log] [blame]
Madan Jampaniab6d3112014-10-02 16:30:14 -07001package org.onlab.netty;
2
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -07003import org.onlab.util.KryoNamespace;
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
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -070015 private KryoNamespace serializerPool;
Madan Jampaniab6d3112014-10-02 16:30:14 -070016
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.
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -070026 serializerPool = KryoNamespace.newBuilder()
Madan Jampaniab6d3112014-10-02 16:30:14 -070027 .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}