blob: 98b1ee3fa5b4760828836b0886cc9adfb246cd30 [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 HIGUCHI03fec1f2014-10-03 09:13:50 -070010import org.onlab.onos.cluster.NodeId;
Yuta HIGUCHI80912e62014-10-12 00:15:47 -070011import org.onlab.onos.mastership.MastershipTerm;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070012import 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 HIGUCHI03fec1f2014-10-03 09:13:50 -070022import org.onlab.onos.net.Port;
23import org.onlab.onos.net.PortNumber;
Madan Jampani53e44e62014-10-07 12:39:51 -070024import org.onlab.onos.net.device.DefaultDeviceDescription;
25import org.onlab.onos.net.device.DefaultPortDescription;
Madan Jampani2ff05592014-10-10 15:42:47 -070026import org.onlab.onos.net.link.DefaultLinkDescription;
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 HIGUCHI47c40882014-10-10 18:44:37 -070033import com.google.common.collect.ImmutableList;
34import com.google.common.collect.ImmutableMap;
35
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070036public final class KryoPoolUtil {
37
38 /**
39 * KryoPool which can serialize ON.lab misc classes.
40 */
41 public static final KryoPool MISC = KryoPool.newBuilder()
42 .register(IpPrefix.class, new IpPrefixSerializer())
43 .register(IpAddress.class, new IpAddressSerializer())
44 .build();
45
46 // TODO: Populate other classes
47 /**
48 * KryoPool which can serialize API bundle classes.
49 */
50 public static final KryoPool API = KryoPool.newBuilder()
51 .register(MISC)
Yuta HIGUCHI47c40882014-10-10 18:44:37 -070052 .register(ImmutableMap.class, new ImmutableMapSerializer())
53 .register(ImmutableList.class, new ImmutableListSerializer())
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070054 .register(
55 //
56 ArrayList.class,
Madan Jampani53e44e62014-10-07 12:39:51 -070057 Arrays.asList().getClass(),
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070058 HashMap.class,
59 //
Yuta HIGUCHI47c40882014-10-10 18:44:37 -070060 //
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070061 ControllerNode.State.class,
62 Device.Type.class,
63 DefaultAnnotations.class,
64 DefaultControllerNode.class,
65 DefaultDevice.class,
Madan Jampani53e44e62014-10-07 12:39:51 -070066 DefaultDeviceDescription.class,
Madan Jampani2ff05592014-10-10 15:42:47 -070067 DefaultLinkDescription.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070068 Port.class,
Madan Jampani53e44e62014-10-07 12:39:51 -070069 DefaultPortDescription.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070070 Element.class,
Yuta HIGUCHI9ee60f62014-10-09 10:00:01 -070071 Link.Type.class,
72 Timestamp.class
73
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070074 )
75 .register(URI.class, new URISerializer())
76 .register(NodeId.class, new NodeIdSerializer())
77 .register(ProviderId.class, new ProviderIdSerializer())
78 .register(DeviceId.class, new DeviceIdSerializer())
79 .register(PortNumber.class, new PortNumberSerializer())
80 .register(DefaultPort.class, new DefaultPortSerializer())
81 .register(LinkKey.class, new LinkKeySerializer())
82 .register(ConnectPoint.class, new ConnectPointSerializer())
83 .register(DefaultLink.class, new DefaultLinkSerializer())
Yuta HIGUCHIfa891c92014-10-09 15:21:40 -070084 .register(MastershipTerm.class, new MastershipTermSerializer())
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070085
86 .build();
87
88
89 // not to be instantiated
90 private KryoPoolUtil() {}
91}