blob: 4414d05f62205fc6b88b30582c92325dea1cc134 [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 */
Yuta HIGUCHI993d7aa2014-10-06 22:54:38 -070013public class KryoSerializer implements PayloadSerializer {
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,
31 Endpoint.class
Madan Jampaniab6d3112014-10-02 16:30:14 -070032 )
33 .build()
34 .populate(1);
35 }
36
37
38 @Override
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
43 @Override
44 public byte[] encode(Object payload) {
45 return serializerPool.serialize(payload);
46 }
Madan Jampani86ed0552014-10-03 16:45:42 -070047
48 @Override
Yuta HIGUCHIcad78e92014-10-06 17:58:36 -070049 public <T> T decode(ByteBuffer buffer) {
Madan Jampani86ed0552014-10-03 16:45:42 -070050 return serializerPool.deserialize(buffer);
51 }
52
53 @Override
Yuta HIGUCHIcad78e92014-10-06 17:58:36 -070054 public void encode(Object obj, ByteBuffer buffer) {
Madan Jampani86ed0552014-10-03 16:45:42 -070055 serializerPool.serialize(obj, buffer);
56 }
Yuta HIGUCHI92626c02014-10-06 15:46:18 -070057}