blob: 103e6701fb572f68ede5acb5e7025e2b170b9a9b [file] [log] [blame]
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -07001package org.onlab.onos.store.serializers;
2
3import java.net.URI;
4import java.util.ArrayList;
Madan Jampani53e44e62014-10-07 12:39:51 -07005import java.util.Arrays;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -07006import java.util.HashMap;
7
8import org.onlab.onos.cluster.ControllerNode;
9import org.onlab.onos.cluster.DefaultControllerNode;
Yuta HIGUCHIfa891c92014-10-09 15:21:40 -070010import org.onlab.onos.cluster.MastershipTerm;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070011import org.onlab.onos.cluster.NodeId;
12import org.onlab.onos.net.ConnectPoint;
13import org.onlab.onos.net.DefaultAnnotations;
14import org.onlab.onos.net.DefaultDevice;
15import org.onlab.onos.net.DefaultLink;
16import org.onlab.onos.net.DefaultPort;
17import org.onlab.onos.net.Device;
18import org.onlab.onos.net.DeviceId;
19import org.onlab.onos.net.Element;
20import org.onlab.onos.net.Link;
21import org.onlab.onos.net.LinkKey;
Yuta HIGUCHId40483d2014-10-09 15:20:30 -070022import org.onlab.onos.net.MastershipRole;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070023import org.onlab.onos.net.Port;
24import org.onlab.onos.net.PortNumber;
Madan Jampani53e44e62014-10-07 12:39:51 -070025import org.onlab.onos.net.device.DefaultDeviceDescription;
26import org.onlab.onos.net.device.DefaultPortDescription;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070027import org.onlab.onos.net.provider.ProviderId;
Yuta HIGUCHI9ee60f62014-10-09 10:00:01 -070028import org.onlab.onos.store.Timestamp;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070029import org.onlab.packet.IpAddress;
30import org.onlab.packet.IpPrefix;
31import org.onlab.util.KryoPool;
32
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070033public final class KryoPoolUtil {
34
35 /**
36 * KryoPool which can serialize ON.lab misc classes.
37 */
38 public static final KryoPool MISC = KryoPool.newBuilder()
39 .register(IpPrefix.class, new IpPrefixSerializer())
40 .register(IpAddress.class, new IpAddressSerializer())
41 .build();
42
43 // TODO: Populate other classes
44 /**
45 * KryoPool which can serialize API bundle classes.
46 */
47 public static final KryoPool API = KryoPool.newBuilder()
48 .register(MISC)
49 .register(
50 //
51 ArrayList.class,
Madan Jampani53e44e62014-10-07 12:39:51 -070052 Arrays.asList().getClass(),
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070053 HashMap.class,
54 //
55 ControllerNode.State.class,
56 Device.Type.class,
57 DefaultAnnotations.class,
58 DefaultControllerNode.class,
59 DefaultDevice.class,
Madan Jampani53e44e62014-10-07 12:39:51 -070060 DefaultDeviceDescription.class,
Yuta HIGUCHId40483d2014-10-09 15:20:30 -070061 MastershipRole.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070062 Port.class,
Madan Jampani53e44e62014-10-07 12:39:51 -070063 DefaultPortDescription.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070064 Element.class,
Yuta HIGUCHI9ee60f62014-10-09 10:00:01 -070065 Link.Type.class,
66 Timestamp.class
67
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070068 )
69 .register(URI.class, new URISerializer())
70 .register(NodeId.class, new NodeIdSerializer())
71 .register(ProviderId.class, new ProviderIdSerializer())
72 .register(DeviceId.class, new DeviceIdSerializer())
73 .register(PortNumber.class, new PortNumberSerializer())
74 .register(DefaultPort.class, new DefaultPortSerializer())
75 .register(LinkKey.class, new LinkKeySerializer())
76 .register(ConnectPoint.class, new ConnectPointSerializer())
77 .register(DefaultLink.class, new DefaultLinkSerializer())
Yuta HIGUCHIfa891c92014-10-09 15:21:40 -070078 .register(MastershipTerm.class, new MastershipTermSerializer())
Yuta HIGUCHId40483d2014-10-09 15:20:30 -070079 .register(MastershipRole.class, new MastershipRoleSerializer())
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070080
81 .build();
82
83
84 // not to be instantiated
85 private KryoPoolUtil() {}
86}