blob: ed1a498f791224d493ba30dc579e7b46e4f4f55e [file] [log] [blame]
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07001/*
Ray Milkey34c95902015-04-15 09:47:53 -07002 * Copyright 2014-2015 Open Networking Laboratory
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07003 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
Brian O'Connorabafb502014-12-02 22:26:20 -080016package org.onosproject.store.serializers;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070017
Jonathan Hart45727852015-01-28 13:35:54 -080018import com.google.common.collect.ImmutableList;
19import com.google.common.collect.ImmutableMap;
20import com.google.common.collect.ImmutableSet;
Madan Jampani86940d92015-05-06 11:47:57 -070021
Jonathan Hart45727852015-01-28 13:35:54 -080022import org.onlab.packet.ChassisId;
23import org.onlab.packet.Ip4Address;
24import org.onlab.packet.Ip4Prefix;
25import org.onlab.packet.Ip6Address;
26import org.onlab.packet.Ip6Prefix;
27import org.onlab.packet.IpAddress;
28import org.onlab.packet.IpPrefix;
29import org.onlab.packet.MacAddress;
30import org.onlab.packet.VlanId;
Sho SHIMIZU63feca72015-05-07 10:44:25 -070031import org.onlab.util.Bandwidth;
Marc De Leenheerbb382352015-04-23 18:20:34 -070032import org.onlab.util.Frequency;
Jonathan Hart45727852015-01-28 13:35:54 -080033import org.onlab.util.KryoNamespace;
Thomas Vachuska90b453f2015-01-30 18:57:14 -080034import org.onosproject.app.ApplicationState;
Brian O'Connorabafb502014-12-02 22:26:20 -080035import org.onosproject.cluster.ControllerNode;
36import org.onosproject.cluster.DefaultControllerNode;
37import org.onosproject.cluster.Leadership;
38import org.onosproject.cluster.LeadershipEvent;
39import org.onosproject.cluster.NodeId;
40import org.onosproject.cluster.RoleInfo;
Thomas Vachuska90b453f2015-01-30 18:57:14 -080041import org.onosproject.core.DefaultApplication;
Brian O'Connorabafb502014-12-02 22:26:20 -080042import org.onosproject.core.DefaultApplicationId;
43import org.onosproject.core.DefaultGroupId;
Thomas Vachuska90b453f2015-01-30 18:57:14 -080044import org.onosproject.core.Version;
Brian O'Connorabafb502014-12-02 22:26:20 -080045import org.onosproject.mastership.MastershipTerm;
Marc De Leenheerbb382352015-04-23 18:20:34 -070046import org.onosproject.net.Annotations;
Sho SHIMIZU014c33a2015-04-30 11:40:37 -070047import org.onosproject.net.ChannelSpacing;
Brian O'Connorabafb502014-12-02 22:26:20 -080048import org.onosproject.net.ConnectPoint;
49import org.onosproject.net.DefaultAnnotations;
50import org.onosproject.net.DefaultDevice;
51import org.onosproject.net.DefaultEdgeLink;
52import org.onosproject.net.DefaultLink;
53import org.onosproject.net.DefaultPath;
54import org.onosproject.net.DefaultPort;
55import org.onosproject.net.Device;
56import org.onosproject.net.DeviceId;
57import org.onosproject.net.Element;
Sho SHIMIZU014c33a2015-04-30 11:40:37 -070058import org.onosproject.net.GridType;
Brian O'Connorabafb502014-12-02 22:26:20 -080059import org.onosproject.net.HostId;
60import org.onosproject.net.HostLocation;
Sho SHIMIZU91210a72015-04-29 12:54:28 -070061import org.onosproject.net.IndexedLambda;
Brian O'Connorabafb502014-12-02 22:26:20 -080062import org.onosproject.net.Link;
63import org.onosproject.net.LinkKey;
Marc De Leenheerbb382352015-04-23 18:20:34 -070064import org.onosproject.net.OchPort;
Sho SHIMIZU91210a72015-04-29 12:54:28 -070065import org.onosproject.net.OchSignal;
Marc De Leenheerbb382352015-04-23 18:20:34 -070066import org.onosproject.net.OduCltPort;
Sho SHIMIZU91210a72015-04-29 12:54:28 -070067import org.onosproject.net.OduSignalType;
Marc De Leenheerbb382352015-04-23 18:20:34 -070068import org.onosproject.net.OmsPort;
Brian O'Connorabafb502014-12-02 22:26:20 -080069import org.onosproject.net.Port;
70import org.onosproject.net.PortNumber;
71import org.onosproject.net.device.DefaultDeviceDescription;
72import org.onosproject.net.device.DefaultPortDescription;
73import org.onosproject.net.flow.CompletedBatchOperation;
74import org.onosproject.net.flow.DefaultFlowEntry;
75import org.onosproject.net.flow.DefaultFlowRule;
76import org.onosproject.net.flow.DefaultTrafficSelector;
77import org.onosproject.net.flow.DefaultTrafficTreatment;
78import org.onosproject.net.flow.FlowEntry;
79import org.onosproject.net.flow.FlowId;
Brian O'Connor72cb19a2015-01-16 16:14:41 -080080import org.onosproject.net.flow.FlowRule;
Brian O'Connorabafb502014-12-02 22:26:20 -080081import org.onosproject.net.flow.FlowRuleBatchEntry;
Brian O'Connor72cb19a2015-01-16 16:14:41 -080082import org.onosproject.net.flow.FlowRuleBatchEvent;
Brian O'Connorabafb502014-12-02 22:26:20 -080083import org.onosproject.net.flow.FlowRuleBatchOperation;
Brian O'Connor72cb19a2015-01-16 16:14:41 -080084import org.onosproject.net.flow.FlowRuleBatchRequest;
jcc3d4e14a2015-04-21 11:32:05 +080085import org.onosproject.net.flow.FlowRuleExtPayLoad;
Brian O'Connorabafb502014-12-02 22:26:20 -080086import org.onosproject.net.flow.StoredFlowEntry;
Brian O'Connorabafb502014-12-02 22:26:20 -080087import org.onosproject.net.flow.criteria.Criterion;
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -070088import org.onosproject.net.flow.criteria.EthCriterion;
89import org.onosproject.net.flow.criteria.EthTypeCriterion;
90import org.onosproject.net.flow.criteria.IPCriterion;
91import org.onosproject.net.flow.criteria.IPDscpCriterion;
92import org.onosproject.net.flow.criteria.IPEcnCriterion;
93import org.onosproject.net.flow.criteria.IPProtocolCriterion;
94import org.onosproject.net.flow.criteria.IPv6ExthdrFlagsCriterion;
95import org.onosproject.net.flow.criteria.IPv6FlowLabelCriterion;
96import org.onosproject.net.flow.criteria.IPv6NDLinkLayerAddressCriterion;
97import org.onosproject.net.flow.criteria.IPv6NDTargetAddressCriterion;
98import org.onosproject.net.flow.criteria.IcmpCodeCriterion;
99import org.onosproject.net.flow.criteria.IcmpTypeCriterion;
100import org.onosproject.net.flow.criteria.Icmpv6CodeCriterion;
101import org.onosproject.net.flow.criteria.Icmpv6TypeCriterion;
Sho SHIMIZUefc2e282015-05-04 15:26:23 -0700102import org.onosproject.net.flow.criteria.IndexedLambdaCriterion;
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700103import org.onosproject.net.flow.criteria.LambdaCriterion;
104import org.onosproject.net.flow.criteria.MetadataCriterion;
105import org.onosproject.net.flow.criteria.MplsCriterion;
Sho SHIMIZU084c4ca2015-05-04 11:52:51 -0700106import org.onosproject.net.flow.criteria.OchSignalCriterion;
Sho SHIMIZUb5e6de62015-05-04 12:13:44 -0700107import org.onosproject.net.flow.criteria.OchSignalTypeCriterion;
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700108import org.onosproject.net.flow.criteria.OpticalSignalTypeCriterion;
109import org.onosproject.net.flow.criteria.PortCriterion;
110import org.onosproject.net.flow.criteria.SctpPortCriterion;
111import org.onosproject.net.flow.criteria.TcpPortCriterion;
112import org.onosproject.net.flow.criteria.UdpPortCriterion;
113import org.onosproject.net.flow.criteria.VlanIdCriterion;
114import org.onosproject.net.flow.criteria.VlanPcpCriterion;
Brian O'Connorabafb502014-12-02 22:26:20 -0800115import org.onosproject.net.flow.instructions.Instructions;
116import org.onosproject.net.flow.instructions.L0ModificationInstruction;
117import org.onosproject.net.flow.instructions.L2ModificationInstruction;
118import org.onosproject.net.flow.instructions.L3ModificationInstruction;
119import org.onosproject.net.host.DefaultHostDescription;
120import org.onosproject.net.host.HostDescription;
121import org.onosproject.net.intent.ConnectivityIntent;
Brian O'Connora7515372015-03-25 14:45:34 -0700122import org.onosproject.net.intent.FlowRuleIntent;
Brian O'Connorabafb502014-12-02 22:26:20 -0800123import org.onosproject.net.intent.HostToHostIntent;
124import org.onosproject.net.intent.Intent;
125import org.onosproject.net.intent.IntentId;
126import org.onosproject.net.intent.IntentOperation;
Brian O'Connorabafb502014-12-02 22:26:20 -0800127import org.onosproject.net.intent.IntentState;
Jonathan Hart5ec32ba2015-02-05 13:33:58 -0800128import org.onosproject.net.intent.Key;
Brian O'Connorabafb502014-12-02 22:26:20 -0800129import org.onosproject.net.intent.LinkCollectionIntent;
Michele Santuari4b6019e2014-12-19 11:31:45 +0100130import org.onosproject.net.intent.MplsIntent;
131import org.onosproject.net.intent.MplsPathIntent;
Brian O'Connorabafb502014-12-02 22:26:20 -0800132import org.onosproject.net.intent.MultiPointToSinglePointIntent;
133import org.onosproject.net.intent.OpticalConnectivityIntent;
134import org.onosproject.net.intent.OpticalPathIntent;
135import org.onosproject.net.intent.PathIntent;
136import org.onosproject.net.intent.PointToPointIntent;
Brian O'Connorabafb502014-12-02 22:26:20 -0800137import org.onosproject.net.intent.SinglePointToMultiPointIntent;
Jonathan Hart45727852015-01-28 13:35:54 -0800138import org.onosproject.net.intent.constraint.AnnotationConstraint;
Brian O'Connorabafb502014-12-02 22:26:20 -0800139import org.onosproject.net.intent.constraint.BandwidthConstraint;
140import org.onosproject.net.intent.constraint.BooleanConstraint;
141import org.onosproject.net.intent.constraint.LambdaConstraint;
142import org.onosproject.net.intent.constraint.LatencyConstraint;
143import org.onosproject.net.intent.constraint.LinkTypeConstraint;
144import org.onosproject.net.intent.constraint.ObstacleConstraint;
145import org.onosproject.net.intent.constraint.WaypointConstraint;
146import org.onosproject.net.link.DefaultLinkDescription;
147import org.onosproject.net.packet.DefaultOutboundPacket;
alshabib42947782015-03-31 14:59:06 -0700148import org.onosproject.net.packet.DefaultPacketRequest;
149import org.onosproject.net.packet.PacketPriority;
Brian O'Connorabafb502014-12-02 22:26:20 -0800150import org.onosproject.net.provider.ProviderId;
Sho SHIMIZU63feca72015-05-07 10:44:25 -0700151import org.onosproject.net.resource.BandwidthResource;
Brian O'Connorabafb502014-12-02 22:26:20 -0800152import org.onosproject.net.resource.BandwidthResourceAllocation;
153import org.onosproject.net.resource.BandwidthResourceRequest;
154import org.onosproject.net.resource.DefaultLinkResourceAllocations;
155import org.onosproject.net.resource.DefaultLinkResourceRequest;
Sho SHIMIZU94b7ff42015-05-06 17:51:49 -0700156import org.onosproject.net.resource.LambdaResource;
Brian O'Connorabafb502014-12-02 22:26:20 -0800157import org.onosproject.net.resource.LambdaResourceAllocation;
158import org.onosproject.net.resource.LambdaResourceRequest;
159import org.onosproject.net.resource.LinkResourceRequest;
Michele Santuari4b6019e2014-12-19 11:31:45 +0100160import org.onosproject.net.resource.MplsLabel;
161import org.onosproject.net.resource.MplsLabelResourceAllocation;
162import org.onosproject.net.resource.MplsLabelResourceRequest;
Brian O'Connorabafb502014-12-02 22:26:20 -0800163import org.onosproject.store.Timestamp;
Madan Jampanie97fec42015-02-17 10:53:42 -0800164import org.onosproject.store.service.Versioned;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700165
Jonathan Hart45727852015-01-28 13:35:54 -0800166import java.net.URI;
167import java.time.Duration;
168import java.util.ArrayList;
169import java.util.Arrays;
170import java.util.Collections;
171import java.util.HashMap;
172import java.util.HashSet;
173import java.util.LinkedList;
174import java.util.Optional;
Madan Jampani86940d92015-05-06 11:47:57 -0700175import java.util.concurrent.ConcurrentHashMap;
176import java.util.concurrent.CopyOnWriteArraySet;
Yuta HIGUCHI47c40882014-10-10 18:44:37 -0700177
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700178public final class KryoNamespaces {
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700179
Yuta HIGUCHI1aa249c2014-11-05 17:40:28 -0800180 public static final KryoNamespace BASIC = KryoNamespace.newBuilder()
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800181 .nextId(KryoNamespace.FLOATING_ID)
182 .register(byte[].class)
183 .register(new ImmutableListSerializer(),
184 ImmutableList.class,
185 ImmutableList.of(1).getClass(),
186 ImmutableList.of(1, 2).getClass())
187 .register(new ImmutableSetSerializer(),
188 ImmutableSet.class,
189 ImmutableSet.of().getClass(),
190 ImmutableSet.of(1).getClass(),
191 ImmutableSet.of(1, 2).getClass())
192 .register(new ImmutableMapSerializer(),
193 ImmutableMap.class,
194 ImmutableMap.of().getClass(),
195 ImmutableMap.of("a", 1).getClass(),
196 ImmutableMap.of("R", 2, "D", 2).getClass())
197 .register(HashMap.class)
Madan Jampani86940d92015-05-06 11:47:57 -0700198 .register(ConcurrentHashMap.class)
199 .register(CopyOnWriteArraySet.class)
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800200 .register(ArrayList.class,
201 LinkedList.class,
202 HashSet.class
203 )
204 .register(new ArraysAsListSerializer(), Arrays.asList().getClass())
205 .register(Collections.singletonList(1).getClass())
206 .register(Duration.class)
Yuta HIGUCHIae1d2102014-11-25 19:26:01 -0800207 .register(Collections.emptySet().getClass())
Sho SHIMIZU166e61e2015-01-21 18:07:12 -0800208 .register(Optional.class)
Jonathan Hart45727852015-01-28 13:35:54 -0800209 .register(Collections.emptyList().getClass())
Brian O'Connor72cb19a2015-01-16 16:14:41 -0800210 .register(Collections.unmodifiableSet(Collections.emptySet()).getClass())
Yuta HIGUCHI1aa249c2014-11-05 17:40:28 -0800211 .build();
212
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700213 /**
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700214 * KryoNamespace which can serialize ON.lab misc classes.
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700215 */
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700216 public static final KryoNamespace MISC = KryoNamespace.newBuilder()
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800217 .nextId(KryoNamespace.FLOATING_ID)
218 .register(new IpPrefixSerializer(), IpPrefix.class)
219 .register(new Ip4PrefixSerializer(), Ip4Prefix.class)
220 .register(new Ip6PrefixSerializer(), Ip6Prefix.class)
221 .register(new IpAddressSerializer(), IpAddress.class)
222 .register(new Ip4AddressSerializer(), Ip4Address.class)
223 .register(new Ip6AddressSerializer(), Ip6Address.class)
224 .register(new MacAddressSerializer(), MacAddress.class)
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -0700225 .register(VlanId.class)
Sho SHIMIZUdee78712015-04-30 09:33:52 -0700226 .register(Frequency.class)
Sho SHIMIZU63feca72015-05-07 10:44:25 -0700227 .register(Bandwidth.class)
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700228 .build();
229
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800230 /**
231 * Kryo registration Id for user custom registration.
232 */
233 public static final int BEGIN_USER_CUSTOM_ID = 300;
234
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700235 // TODO: Populate other classes
236 /**
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700237 * KryoNamespace which can serialize API bundle classes.
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700238 */
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700239 public static final KryoNamespace API = KryoNamespace.newBuilder()
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800240 .nextId(KryoNamespace.INITIAL_ID)
Yuta HIGUCHI1aa249c2014-11-05 17:40:28 -0800241 .register(BASIC)
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800242 .nextId(KryoNamespace.INITIAL_ID + 30)
243 .register(MISC)
244 .nextId(KryoNamespace.INITIAL_ID + 30 + 10)
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700245 .register(
Thomas Vachuska90b453f2015-01-30 18:57:14 -0800246 Version.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700247 ControllerNode.State.class,
Thomas Vachuska90b453f2015-01-30 18:57:14 -0800248 ApplicationState.class,
249 DefaultApplication.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700250 Device.Type.class,
Thomas Vachuskad16ce182014-10-29 17:25:29 -0700251 Port.Type.class,
alshabib7911a052014-10-16 17:49:37 -0700252 ChassisId.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700253 DefaultAnnotations.class,
254 DefaultControllerNode.class,
255 DefaultDevice.class,
Madan Jampani53e44e62014-10-07 12:39:51 -0700256 DefaultDeviceDescription.class,
Madan Jampani2ff05592014-10-10 15:42:47 -0700257 DefaultLinkDescription.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700258 Port.class,
Madan Jampani53e44e62014-10-07 12:39:51 -0700259 DefaultPortDescription.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700260 Element.class,
Yuta HIGUCHI9ee60f62014-10-09 10:00:01 -0700261 Link.Type.class,
Thomas Vachuska57126fe2014-11-11 17:13:24 -0800262 Link.State.class,
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -0700263 Timestamp.class,
Madan Jampani1ee91782014-11-20 20:24:24 -0800264 Leadership.class,
265 LeadershipEvent.class,
266 LeadershipEvent.Type.class,
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -0700267 HostId.class,
268 HostDescription.class,
Madan Jampani38b250d2014-10-17 11:02:38 -0700269 DefaultHostDescription.class,
Madan Jampani117aaae2014-10-23 10:04:05 -0700270 DefaultFlowEntry.class,
271 StoredFlowEntry.class,
sangho11c30ac2015-01-22 14:30:55 -0800272 FlowRule.Type.class,
Yuta HIGUCHI2fcfde92014-10-20 18:37:14 -0700273 DefaultFlowRule.class,
alshabib3d643ec2014-10-22 18:33:00 -0700274 DefaultFlowEntry.class,
alshabib42947782015-03-31 14:59:06 -0700275 DefaultPacketRequest.class,
276 PacketPriority.class,
alshabibf6c2ede2014-10-22 23:31:50 -0700277 FlowEntry.FlowEntryState.class,
Yuta HIGUCHI2809bf32014-10-20 22:44:12 -0700278 FlowId.class,
Yuta HIGUCHI85d58d12014-10-20 23:59:44 -0700279 DefaultTrafficSelector.class,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700280 PortCriterion.class,
281 MetadataCriterion.class,
282 EthCriterion.class,
283 EthTypeCriterion.class,
284 VlanIdCriterion.class,
285 VlanPcpCriterion.class,
286 IPDscpCriterion.class,
287 IPEcnCriterion.class,
288 IPProtocolCriterion.class,
289 IPCriterion.class,
290 TcpPortCriterion.class,
291 UdpPortCriterion.class,
292 SctpPortCriterion.class,
293 IcmpTypeCriterion.class,
294 IcmpCodeCriterion.class,
295 IPv6FlowLabelCriterion.class,
296 Icmpv6TypeCriterion.class,
297 Icmpv6CodeCriterion.class,
298 IPv6NDTargetAddressCriterion.class,
299 IPv6NDLinkLayerAddressCriterion.class,
300 MplsCriterion.class,
301 IPv6ExthdrFlagsCriterion.class,
302 LambdaCriterion.class,
Sho SHIMIZUefc2e282015-05-04 15:26:23 -0700303 IndexedLambdaCriterion.class,
Sho SHIMIZU084c4ca2015-05-04 11:52:51 -0700304 OchSignalCriterion.class,
Sho SHIMIZUb5e6de62015-05-04 12:13:44 -0700305 OchSignalTypeCriterion.class,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700306 OpticalSignalTypeCriterion.class,
Yuta HIGUCHI85d58d12014-10-20 23:59:44 -0700307 Criterion.class,
308 Criterion.Type.class,
309 DefaultTrafficTreatment.class,
310 Instructions.DropInstruction.class,
Yuta HIGUCHI40d01772014-10-21 00:08:44 -0700311 Instructions.OutputInstruction.class,
Pavlin Radoslavov1d218662015-02-13 11:34:30 -0800312 Instructions.GroupInstruction.class,
Jonathan Hart68fef9d2014-10-29 17:30:03 -0700313 L0ModificationInstruction.class,
314 L0ModificationInstruction.L0SubType.class,
315 L0ModificationInstruction.ModLambdaInstruction.class,
Sho SHIMIZUc6827092015-05-05 17:58:34 -0700316 L0ModificationInstruction.ModOchSignalInstruction.class,
Jonathan Hart68fef9d2014-10-29 17:30:03 -0700317 L2ModificationInstruction.class,
318 L2ModificationInstruction.L2SubType.class,
319 L2ModificationInstruction.ModEtherInstruction.class,
Pavlin Radoslavov1d218662015-02-13 11:34:30 -0800320 L2ModificationInstruction.PushHeaderInstructions.class,
Jonathan Hart68fef9d2014-10-29 17:30:03 -0700321 L2ModificationInstruction.ModVlanIdInstruction.class,
322 L2ModificationInstruction.ModVlanPcpInstruction.class,
Pavlin Radoslavov1d218662015-02-13 11:34:30 -0800323 L2ModificationInstruction.ModMplsLabelInstruction.class,
324 L2ModificationInstruction.ModMplsTtlInstruction.class,
Jonathan Hart68fef9d2014-10-29 17:30:03 -0700325 L3ModificationInstruction.class,
326 L3ModificationInstruction.L3SubType.class,
327 L3ModificationInstruction.ModIPInstruction.class,
Pavlin Radoslavovfebe82c2015-02-11 19:08:15 -0800328 L3ModificationInstruction.ModIPv6FlowLabelInstruction.class,
Pavlin Radoslavov1d218662015-02-13 11:34:30 -0800329 L3ModificationInstruction.ModTtlInstruction.class,
Yuta HIGUCHI9def0472014-10-23 15:51:10 -0700330 RoleInfo.class,
Brian O'Connor72cb19a2015-01-16 16:14:41 -0800331 FlowRuleBatchEvent.class,
332 FlowRuleBatchEvent.Type.class,
333 FlowRuleBatchRequest.class,
Yuta HIGUCHI9def0472014-10-23 15:51:10 -0700334 FlowRuleBatchOperation.class,
335 CompletedBatchOperation.class,
336 FlowRuleBatchEntry.class,
Yuta HIGUCHI087019b2014-10-28 21:07:56 -0700337 FlowRuleBatchEntry.FlowRuleOperation.class,
338 IntentId.class,
339 IntentState.class,
Brian O'Connor4e6c17d2015-02-19 11:40:05 -0800340 //Key.class, is abstract
341 Key.of(1L, new DefaultApplicationId(0, "bar")).getClass(), //LongKey.class
342 Key.of("foo", new DefaultApplicationId(0, "bar")).getClass(), //StringKey.class
Yuta HIGUCHI087019b2014-10-28 21:07:56 -0700343 Intent.class,
344 ConnectivityIntent.class,
345 PathIntent.class,
346 DefaultPath.class,
347 DefaultEdgeLink.class,
348 HostToHostIntent.class,
349 PointToPointIntent.class,
Jonathan Hart68fef9d2014-10-29 17:30:03 -0700350 MultiPointToSinglePointIntent.class,
Michele Santuari4a338072014-11-05 18:38:55 +0100351 SinglePointToMultiPointIntent.class,
Brian O'Connora7515372015-03-25 14:45:34 -0700352 FlowRuleIntent.class,
Brian O'Connor41718fc2014-10-30 16:57:21 -0700353 LinkCollectionIntent.class,
354 OpticalConnectivityIntent.class,
355 OpticalPathIntent.class,
Thomas Vachuska7d0032b2014-11-04 17:39:57 -0800356 LinkResourceRequest.class,
Yuta HIGUCHIadac04a2014-11-13 00:02:45 -0800357 DefaultLinkResourceRequest.class,
358 BandwidthResourceRequest.class,
359 LambdaResourceRequest.class,
Sho SHIMIZU94b7ff42015-05-06 17:51:49 -0700360 LambdaResource.class,
Sho SHIMIZU63feca72015-05-07 10:44:25 -0700361 BandwidthResource.class,
Yuta HIGUCHIadac04a2014-11-13 00:02:45 -0800362 DefaultLinkResourceAllocations.class,
363 BandwidthResourceAllocation.class,
364 LambdaResourceAllocation.class,
Sho SHIMIZUcd4bac82014-11-11 17:07:25 -0800365 // Constraints
Thomas Vachuska7d0032b2014-11-04 17:39:57 -0800366 LambdaConstraint.class,
367 BandwidthConstraint.class,
368 LinkTypeConstraint.class,
Sho SHIMIZUcd4bac82014-11-11 17:07:25 -0800369 LatencyConstraint.class,
370 WaypointConstraint.class,
371 ObstacleConstraint.class,
372 AnnotationConstraint.class,
Brian O'Connor72a034c2014-11-26 18:24:23 -0800373 BooleanConstraint.class,
jcc3d4e14a2015-04-21 11:32:05 +0800374 IntentOperation.class,
Marc De Leenheerbb382352015-04-23 18:20:34 -0700375 FlowRuleExtPayLoad.class,
376 Frequency.class,
377 DefaultAnnotations.class
378 )
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800379 .register(new DefaultApplicationIdSerializer(), DefaultApplicationId.class)
380 .register(new URISerializer(), URI.class)
381 .register(new NodeIdSerializer(), NodeId.class)
382 .register(new ProviderIdSerializer(), ProviderId.class)
383 .register(new DeviceIdSerializer(), DeviceId.class)
384 .register(new PortNumberSerializer(), PortNumber.class)
385 .register(new DefaultPortSerializer(), DefaultPort.class)
386 .register(new LinkKeySerializer(), LinkKey.class)
387 .register(new ConnectPointSerializer(), ConnectPoint.class)
388 .register(new DefaultLinkSerializer(), DefaultLink.class)
389 .register(new MastershipTermSerializer(), MastershipTerm.class)
390 .register(new HostLocationSerializer(), HostLocation.class)
391 .register(new DefaultOutboundPacketSerializer(), DefaultOutboundPacket.class)
Madan Jampanie97fec42015-02-17 10:53:42 -0800392 .register(Versioned.class)
Yuta HIGUCHIf6171232014-11-25 15:14:44 -0800393 .register(DefaultGroupId.class)
Marc De Leenheerbb382352015-04-23 18:20:34 -0700394 .register(Annotations.class)
395 .register(OmsPort.class)
396 .register(OchPort.class)
Sho SHIMIZU014c33a2015-04-30 11:40:37 -0700397 .register(OduSignalType.class)
398 .register(GridType.class)
399 .register(ChannelSpacing.class)
Marc De Leenheerbb382352015-04-23 18:20:34 -0700400 .register(OduCltPort.class)
401 .register(OduCltPort.SignalType.class)
Sho SHIMIZU91210a72015-04-29 12:54:28 -0700402 .register(IndexedLambda.class)
403 .register(OchSignal.class)
Michele Santuari4b6019e2014-12-19 11:31:45 +0100404 .register(
405 MplsIntent.class,
406 MplsPathIntent.class,
407 MplsLabelResourceAllocation.class,
408 MplsLabelResourceRequest.class,
409 MplsLabel.class,
sanghob35a6192015-04-01 13:05:26 -0700410 org.onlab.packet.MplsLabel.class,
411 org.onlab.packet.MPLS.class
Marc De Leenheerbb382352015-04-23 18:20:34 -0700412 )
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700413
414 .build();
415
416
417 // not to be instantiated
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700418 private KryoNamespaces() {}
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700419}