blob: 0e9e19cc2be27927b06612601763adab7f9d0499 [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;
alshabib3d643ec2014-10-22 18:33:00 -07007import java.util.HashSet;
Yuta HIGUCHI9def0472014-10-23 15:51:10 -07008import java.util.LinkedList;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -07009
10import org.onlab.onos.cluster.ControllerNode;
11import org.onlab.onos.cluster.DefaultControllerNode;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070012import org.onlab.onos.cluster.NodeId;
Yuta HIGUCHI40d01772014-10-21 00:08:44 -070013import org.onlab.onos.cluster.RoleInfo;
Yuta HIGUCHI80912e62014-10-12 00:15:47 -070014import org.onlab.onos.mastership.MastershipTerm;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070015import org.onlab.onos.net.ConnectPoint;
16import org.onlab.onos.net.DefaultAnnotations;
17import org.onlab.onos.net.DefaultDevice;
18import org.onlab.onos.net.DefaultLink;
19import org.onlab.onos.net.DefaultPort;
20import org.onlab.onos.net.Device;
21import org.onlab.onos.net.DeviceId;
22import org.onlab.onos.net.Element;
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -070023import org.onlab.onos.net.HostId;
24import org.onlab.onos.net.HostLocation;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070025import org.onlab.onos.net.Link;
26import org.onlab.onos.net.LinkKey;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070027import org.onlab.onos.net.Port;
28import org.onlab.onos.net.PortNumber;
Madan Jampani53e44e62014-10-07 12:39:51 -070029import org.onlab.onos.net.device.DefaultDeviceDescription;
30import org.onlab.onos.net.device.DefaultPortDescription;
Yuta HIGUCHI9def0472014-10-23 15:51:10 -070031import org.onlab.onos.net.flow.CompletedBatchOperation;
Madan Jampani117aaae2014-10-23 10:04:05 -070032import org.onlab.onos.net.flow.DefaultFlowEntry;
Madan Jampani38b250d2014-10-17 11:02:38 -070033import org.onlab.onos.net.flow.DefaultFlowRule;
Yuta HIGUCHI2809bf32014-10-20 22:44:12 -070034import org.onlab.onos.net.flow.DefaultTrafficSelector;
Yuta HIGUCHI85d58d12014-10-20 23:59:44 -070035import org.onlab.onos.net.flow.DefaultTrafficTreatment;
alshabibf6c2ede2014-10-22 23:31:50 -070036import org.onlab.onos.net.flow.FlowEntry;
Yuta HIGUCHI2fcfde92014-10-20 18:37:14 -070037import org.onlab.onos.net.flow.FlowId;
Yuta HIGUCHI9def0472014-10-23 15:51:10 -070038import org.onlab.onos.net.flow.FlowRuleBatchEntry;
39import org.onlab.onos.net.flow.FlowRuleBatchOperation;
Madan Jampani117aaae2014-10-23 10:04:05 -070040import org.onlab.onos.net.flow.StoredFlowEntry;
Yuta HIGUCHI85d58d12014-10-20 23:59:44 -070041import org.onlab.onos.net.flow.criteria.Criteria;
42import org.onlab.onos.net.flow.criteria.Criterion;
43import org.onlab.onos.net.flow.instructions.Instructions;
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -070044import org.onlab.onos.net.host.DefaultHostDescription;
45import org.onlab.onos.net.host.HostDescription;
Madan Jampani2ff05592014-10-10 15:42:47 -070046import org.onlab.onos.net.link.DefaultLinkDescription;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070047import org.onlab.onos.net.provider.ProviderId;
Yuta HIGUCHI9ee60f62014-10-09 10:00:01 -070048import org.onlab.onos.store.Timestamp;
alshabib7911a052014-10-16 17:49:37 -070049import org.onlab.packet.ChassisId;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070050import org.onlab.packet.IpAddress;
51import org.onlab.packet.IpPrefix;
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -070052import org.onlab.packet.MacAddress;
53import org.onlab.packet.VlanId;
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -070054import org.onlab.util.KryoNamespace;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070055
Yuta HIGUCHI47c40882014-10-10 18:44:37 -070056import com.google.common.collect.ImmutableList;
57import com.google.common.collect.ImmutableMap;
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -070058import com.google.common.collect.ImmutableSet;
Yuta HIGUCHI47c40882014-10-10 18:44:37 -070059
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -070060public final class KryoNamespaces {
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070061
62 /**
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -070063 * KryoNamespace which can serialize ON.lab misc classes.
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070064 */
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -070065 public static final KryoNamespace MISC = KryoNamespace.newBuilder()
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070066 .register(IpPrefix.class, new IpPrefixSerializer())
67 .register(IpAddress.class, new IpAddressSerializer())
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -070068 .register(MacAddress.class, new MacAddressSerializer())
69 .register(VlanId.class)
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070070 .build();
71
72 // TODO: Populate other classes
73 /**
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -070074 * KryoNamespace which can serialize API bundle classes.
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070075 */
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -070076 public static final KryoNamespace API = KryoNamespace.newBuilder()
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070077 .register(MISC)
Yuta HIGUCHI47c40882014-10-10 18:44:37 -070078 .register(ImmutableMap.class, new ImmutableMapSerializer())
79 .register(ImmutableList.class, new ImmutableListSerializer())
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -070080 .register(ImmutableSet.class, new ImmutableSetSerializer())
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070081 .register(
82 //
83 ArrayList.class,
Madan Jampani53e44e62014-10-07 12:39:51 -070084 Arrays.asList().getClass(),
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070085 HashMap.class,
alshabib3d643ec2014-10-22 18:33:00 -070086 HashSet.class,
Yuta HIGUCHI9def0472014-10-23 15:51:10 -070087 LinkedList.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070088 //
Yuta HIGUCHI47c40882014-10-10 18:44:37 -070089 //
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070090 ControllerNode.State.class,
91 Device.Type.class,
alshabib7911a052014-10-16 17:49:37 -070092 ChassisId.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070093 DefaultAnnotations.class,
94 DefaultControllerNode.class,
95 DefaultDevice.class,
Madan Jampani53e44e62014-10-07 12:39:51 -070096 DefaultDeviceDescription.class,
Madan Jampani2ff05592014-10-10 15:42:47 -070097 DefaultLinkDescription.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070098 Port.class,
Madan Jampani53e44e62014-10-07 12:39:51 -070099 DefaultPortDescription.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700100 Element.class,
Yuta HIGUCHI9ee60f62014-10-09 10:00:01 -0700101 Link.Type.class,
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -0700102 Timestamp.class,
103 HostId.class,
104 HostDescription.class,
Madan Jampani38b250d2014-10-17 11:02:38 -0700105 DefaultHostDescription.class,
Madan Jampani117aaae2014-10-23 10:04:05 -0700106 DefaultFlowEntry.class,
107 StoredFlowEntry.class,
Yuta HIGUCHI2fcfde92014-10-20 18:37:14 -0700108 DefaultFlowRule.class,
alshabib3d643ec2014-10-22 18:33:00 -0700109 DefaultFlowEntry.class,
alshabibf6c2ede2014-10-22 23:31:50 -0700110 FlowEntry.FlowEntryState.class,
Yuta HIGUCHI2809bf32014-10-20 22:44:12 -0700111 FlowId.class,
Yuta HIGUCHI85d58d12014-10-20 23:59:44 -0700112 DefaultTrafficSelector.class,
113 Criteria.PortCriterion.class,
114 Criteria.EthCriterion.class,
115 Criteria.EthTypeCriterion.class,
116 Criteria.IPCriterion.class,
117 Criteria.IPProtocolCriterion.class,
118 Criteria.VlanIdCriterion.class,
119 Criteria.VlanPcpCriterion.class,
120 Criteria.TcpPortCriterion.class,
121 Criterion.class,
122 Criterion.Type.class,
123 DefaultTrafficTreatment.class,
124 Instructions.DropInstruction.class,
Yuta HIGUCHI40d01772014-10-21 00:08:44 -0700125 Instructions.OutputInstruction.class,
Yuta HIGUCHI9def0472014-10-23 15:51:10 -0700126 RoleInfo.class,
127 FlowRuleBatchOperation.class,
128 CompletedBatchOperation.class,
129 FlowRuleBatchEntry.class,
130 FlowRuleBatchEntry.FlowRuleOperation.class
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700131 )
132 .register(URI.class, new URISerializer())
133 .register(NodeId.class, new NodeIdSerializer())
134 .register(ProviderId.class, new ProviderIdSerializer())
135 .register(DeviceId.class, new DeviceIdSerializer())
136 .register(PortNumber.class, new PortNumberSerializer())
137 .register(DefaultPort.class, new DefaultPortSerializer())
138 .register(LinkKey.class, new LinkKeySerializer())
139 .register(ConnectPoint.class, new ConnectPointSerializer())
140 .register(DefaultLink.class, new DefaultLinkSerializer())
Yuta HIGUCHIfa891c92014-10-09 15:21:40 -0700141 .register(MastershipTerm.class, new MastershipTermSerializer())
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -0700142 .register(HostLocation.class, new HostLocationSerializer())
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700143
144 .build();
145
146
147 // not to be instantiated
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700148 private KryoNamespaces() {}
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700149}