blob: 0ef7347df367d48bb4034bab9938b4f7041a5f72 [file] [log] [blame]
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07001/*
Sho SHIMIZU7e6d18e2016-01-07 18:44:33 -08002 * Copyright 2014-2016 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 Jampani3ca9cb62015-07-21 11:35:44 -070021import com.google.common.collect.Maps;
Madan Jampani063949f2016-01-26 12:10:05 -080022
Jonathan Hart45727852015-01-28 13:35:54 -080023import org.onlab.packet.ChassisId;
alshabibcaf1ca22015-06-25 15:18:16 -070024import org.onlab.packet.EthType;
Jonathan Hart45727852015-01-28 13:35:54 -080025import org.onlab.packet.Ip4Address;
26import org.onlab.packet.Ip4Prefix;
27import org.onlab.packet.Ip6Address;
28import org.onlab.packet.Ip6Prefix;
29import org.onlab.packet.IpAddress;
30import org.onlab.packet.IpPrefix;
31import org.onlab.packet.MacAddress;
Hyunsun Mooncf732fb2015-08-22 21:04:23 -070032import org.onlab.packet.TpPort;
Jonathan Hart45727852015-01-28 13:35:54 -080033import org.onlab.packet.VlanId;
Sho SHIMIZU63feca72015-05-07 10:44:25 -070034import org.onlab.util.Bandwidth;
Marc De Leenheerbb382352015-04-23 18:20:34 -070035import org.onlab.util.Frequency;
Jonathan Hart45727852015-01-28 13:35:54 -080036import org.onlab.util.KryoNamespace;
Madan Jampani063949f2016-01-26 12:10:05 -080037import org.onlab.util.Match;
Thomas Vachuska90b453f2015-01-30 18:57:14 -080038import org.onosproject.app.ApplicationState;
Brian O'Connorabafb502014-12-02 22:26:20 -080039import org.onosproject.cluster.ControllerNode;
40import org.onosproject.cluster.DefaultControllerNode;
41import org.onosproject.cluster.Leadership;
42import org.onosproject.cluster.LeadershipEvent;
43import org.onosproject.cluster.NodeId;
44import org.onosproject.cluster.RoleInfo;
Changhoon Yoon32b93702015-05-15 04:41:15 +090045import org.onosproject.core.ApplicationRole;
Thomas Vachuska90b453f2015-01-30 18:57:14 -080046import org.onosproject.core.DefaultApplication;
Brian O'Connorabafb502014-12-02 22:26:20 -080047import org.onosproject.core.DefaultApplicationId;
48import org.onosproject.core.DefaultGroupId;
Thomas Vachuska90b453f2015-01-30 18:57:14 -080049import org.onosproject.core.Version;
Brian O'Connorce2d8b52015-07-29 16:24:13 -070050import org.onosproject.incubator.net.domain.IntentDomainId;
Brian O'Connorabafb502014-12-02 22:26:20 -080051import org.onosproject.mastership.MastershipTerm;
Marc De Leenheerbb382352015-04-23 18:20:34 -070052import org.onosproject.net.Annotations;
Sho SHIMIZU014c33a2015-04-30 11:40:37 -070053import org.onosproject.net.ChannelSpacing;
Toru Furusawa72ee30c2016-01-08 13:29:04 -080054import org.onosproject.net.CltSignalType;
Brian O'Connorabafb502014-12-02 22:26:20 -080055import org.onosproject.net.ConnectPoint;
56import org.onosproject.net.DefaultAnnotations;
57import org.onosproject.net.DefaultDevice;
58import org.onosproject.net.DefaultEdgeLink;
Madan Jampani70583972015-06-30 11:25:05 -070059import org.onosproject.net.DefaultHost;
Brian O'Connorabafb502014-12-02 22:26:20 -080060import org.onosproject.net.DefaultLink;
61import org.onosproject.net.DefaultPath;
62import org.onosproject.net.DefaultPort;
63import org.onosproject.net.Device;
64import org.onosproject.net.DeviceId;
65import org.onosproject.net.Element;
Sho SHIMIZU014c33a2015-04-30 11:40:37 -070066import org.onosproject.net.GridType;
Brian O'Connorabafb502014-12-02 22:26:20 -080067import org.onosproject.net.HostId;
68import org.onosproject.net.HostLocation;
Sho SHIMIZU91210a72015-04-29 12:54:28 -070069import org.onosproject.net.IndexedLambda;
Brian O'Connorabafb502014-12-02 22:26:20 -080070import org.onosproject.net.Link;
71import org.onosproject.net.LinkKey;
Marc De Leenheerbb382352015-04-23 18:20:34 -070072import org.onosproject.net.OchPort;
Sho SHIMIZU91210a72015-04-29 12:54:28 -070073import org.onosproject.net.OchSignal;
Ayaka Koshibebcb02372015-06-01 10:56:42 -070074import org.onosproject.net.OchSignalType;
Marc De Leenheerbb382352015-04-23 18:20:34 -070075import org.onosproject.net.OduCltPort;
Yafit Hadar5796d972015-10-15 13:16:11 +030076import org.onosproject.net.OduSignalId;
Sho SHIMIZU91210a72015-04-29 12:54:28 -070077import org.onosproject.net.OduSignalType;
Marc De Leenheerbb382352015-04-23 18:20:34 -070078import org.onosproject.net.OmsPort;
Brian O'Connorabafb502014-12-02 22:26:20 -080079import org.onosproject.net.Port;
80import org.onosproject.net.PortNumber;
Rimon Ashkenazye2410ff2015-11-10 14:11:08 +020081import org.onosproject.net.TributarySlot;
Brian O'Connorabafb502014-12-02 22:26:20 -080082import org.onosproject.net.device.DefaultDeviceDescription;
83import org.onosproject.net.device.DefaultPortDescription;
Thomas Vachuskafdbc4c22015-05-29 15:53:01 -070084import org.onosproject.net.device.DefaultPortStatistics;
Marc De Leenheer01cb1a92015-05-13 09:23:44 -070085import org.onosproject.net.device.OchPortDescription;
86import org.onosproject.net.device.OduCltPortDescription;
87import org.onosproject.net.device.OmsPortDescription;
Thomas Vachuskafdbc4c22015-05-29 15:53:01 -070088import org.onosproject.net.device.PortStatistics;
Brian O'Connorabafb502014-12-02 22:26:20 -080089import org.onosproject.net.flow.CompletedBatchOperation;
90import org.onosproject.net.flow.DefaultFlowEntry;
91import org.onosproject.net.flow.DefaultFlowRule;
Srikanth Vavilapalli95810f52015-09-14 15:49:56 -070092import org.onosproject.net.flow.DefaultTableStatisticsEntry;
Brian O'Connorabafb502014-12-02 22:26:20 -080093import org.onosproject.net.flow.DefaultTrafficSelector;
94import org.onosproject.net.flow.DefaultTrafficTreatment;
95import org.onosproject.net.flow.FlowEntry;
96import org.onosproject.net.flow.FlowId;
97import org.onosproject.net.flow.FlowRuleBatchEntry;
Brian O'Connor72cb19a2015-01-16 16:14:41 -080098import org.onosproject.net.flow.FlowRuleBatchEvent;
Brian O'Connorabafb502014-12-02 22:26:20 -080099import org.onosproject.net.flow.FlowRuleBatchOperation;
Brian O'Connor72cb19a2015-01-16 16:14:41 -0800100import org.onosproject.net.flow.FlowRuleBatchRequest;
Madan Jampani87e276b2015-06-02 10:49:47 -0700101import org.onosproject.net.flow.FlowRuleEvent;
jcc3d4e14a2015-04-21 11:32:05 +0800102import org.onosproject.net.flow.FlowRuleExtPayLoad;
Brian O'Connorabafb502014-12-02 22:26:20 -0800103import org.onosproject.net.flow.StoredFlowEntry;
Srikanth Vavilapalli95810f52015-09-14 15:49:56 -0700104import org.onosproject.net.flow.TableStatisticsEntry;
Hyunsun Moonc8fe98b2016-01-11 00:01:46 -0800105import org.onosproject.net.flow.criteria.ArpHaCriterion;
106import org.onosproject.net.flow.criteria.ArpOpCriterion;
107import org.onosproject.net.flow.criteria.ArpPaCriterion;
Brian O'Connorabafb502014-12-02 22:26:20 -0800108import org.onosproject.net.flow.criteria.Criterion;
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700109import org.onosproject.net.flow.criteria.EthCriterion;
110import org.onosproject.net.flow.criteria.EthTypeCriterion;
111import org.onosproject.net.flow.criteria.IPCriterion;
112import org.onosproject.net.flow.criteria.IPDscpCriterion;
113import org.onosproject.net.flow.criteria.IPEcnCriterion;
114import org.onosproject.net.flow.criteria.IPProtocolCriterion;
115import org.onosproject.net.flow.criteria.IPv6ExthdrFlagsCriterion;
116import org.onosproject.net.flow.criteria.IPv6FlowLabelCriterion;
117import org.onosproject.net.flow.criteria.IPv6NDLinkLayerAddressCriterion;
118import org.onosproject.net.flow.criteria.IPv6NDTargetAddressCriterion;
119import org.onosproject.net.flow.criteria.IcmpCodeCriterion;
120import org.onosproject.net.flow.criteria.IcmpTypeCriterion;
121import org.onosproject.net.flow.criteria.Icmpv6CodeCriterion;
122import org.onosproject.net.flow.criteria.Icmpv6TypeCriterion;
Sho SHIMIZUefc2e282015-05-04 15:26:23 -0700123import org.onosproject.net.flow.criteria.IndexedLambdaCriterion;
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700124import org.onosproject.net.flow.criteria.LambdaCriterion;
125import org.onosproject.net.flow.criteria.MetadataCriterion;
Charles Chan7ba33f42015-12-15 19:27:30 -0800126import org.onosproject.net.flow.criteria.MplsBosCriterion;
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700127import org.onosproject.net.flow.criteria.MplsCriterion;
Sho SHIMIZU084c4ca2015-05-04 11:52:51 -0700128import org.onosproject.net.flow.criteria.OchSignalCriterion;
Sho SHIMIZUb5e6de62015-05-04 12:13:44 -0700129import org.onosproject.net.flow.criteria.OchSignalTypeCriterion;
Yafit Hadar5796d972015-10-15 13:16:11 +0300130import org.onosproject.net.flow.criteria.OduSignalIdCriterion;
131import org.onosproject.net.flow.criteria.OduSignalTypeCriterion;
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700132import org.onosproject.net.flow.criteria.PortCriterion;
133import org.onosproject.net.flow.criteria.SctpPortCriterion;
134import org.onosproject.net.flow.criteria.TcpPortCriterion;
Hyunsun Moona08c5d02015-07-14 17:53:00 -0700135import org.onosproject.net.flow.criteria.TunnelIdCriterion;
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700136import org.onosproject.net.flow.criteria.UdpPortCriterion;
137import org.onosproject.net.flow.criteria.VlanIdCriterion;
138import org.onosproject.net.flow.criteria.VlanPcpCriterion;
alshabib880b6442015-11-23 22:13:04 -0800139import org.onosproject.net.flow.instructions.ExtensionTreatmentType;
Brian O'Connorabafb502014-12-02 22:26:20 -0800140import org.onosproject.net.flow.instructions.Instructions;
141import org.onosproject.net.flow.instructions.L0ModificationInstruction;
Yafit Hadar5796d972015-10-15 13:16:11 +0300142import org.onosproject.net.flow.instructions.L1ModificationInstruction;
Brian O'Connorabafb502014-12-02 22:26:20 -0800143import org.onosproject.net.flow.instructions.L2ModificationInstruction;
144import org.onosproject.net.flow.instructions.L3ModificationInstruction;
Hyunsun Moonc8bd97c2015-07-18 22:47:33 -0700145import org.onosproject.net.flow.instructions.L4ModificationInstruction;
Brian O'Connorabafb502014-12-02 22:26:20 -0800146import org.onosproject.net.host.DefaultHostDescription;
147import org.onosproject.net.host.HostDescription;
148import org.onosproject.net.intent.ConnectivityIntent;
Brian O'Connora7515372015-03-25 14:45:34 -0700149import org.onosproject.net.intent.FlowRuleIntent;
Brian O'Connorabafb502014-12-02 22:26:20 -0800150import org.onosproject.net.intent.HostToHostIntent;
151import org.onosproject.net.intent.Intent;
152import org.onosproject.net.intent.IntentId;
153import org.onosproject.net.intent.IntentOperation;
Brian O'Connorabafb502014-12-02 22:26:20 -0800154import org.onosproject.net.intent.IntentState;
Jonathan Hart5ec32ba2015-02-05 13:33:58 -0800155import org.onosproject.net.intent.Key;
Brian O'Connorabafb502014-12-02 22:26:20 -0800156import org.onosproject.net.intent.LinkCollectionIntent;
Michele Santuari4b6019e2014-12-19 11:31:45 +0100157import org.onosproject.net.intent.MplsIntent;
158import org.onosproject.net.intent.MplsPathIntent;
Brian O'Connorabafb502014-12-02 22:26:20 -0800159import org.onosproject.net.intent.MultiPointToSinglePointIntent;
Marc De Leenheer8c2caac2015-05-28 16:37:33 -0700160import org.onosproject.net.intent.OpticalCircuitIntent;
Brian O'Connorabafb502014-12-02 22:26:20 -0800161import org.onosproject.net.intent.OpticalConnectivityIntent;
162import org.onosproject.net.intent.OpticalPathIntent;
163import org.onosproject.net.intent.PathIntent;
164import org.onosproject.net.intent.PointToPointIntent;
Brian O'Connorabafb502014-12-02 22:26:20 -0800165import org.onosproject.net.intent.SinglePointToMultiPointIntent;
Jonathan Hart45727852015-01-28 13:35:54 -0800166import org.onosproject.net.intent.constraint.AnnotationConstraint;
Brian O'Connorabafb502014-12-02 22:26:20 -0800167import org.onosproject.net.intent.constraint.BandwidthConstraint;
168import org.onosproject.net.intent.constraint.BooleanConstraint;
169import org.onosproject.net.intent.constraint.LambdaConstraint;
170import org.onosproject.net.intent.constraint.LatencyConstraint;
171import org.onosproject.net.intent.constraint.LinkTypeConstraint;
172import org.onosproject.net.intent.constraint.ObstacleConstraint;
Jonathan Hart96c5a4a2015-07-31 14:23:33 -0700173import org.onosproject.net.intent.constraint.PartialFailureConstraint;
Brian O'Connorabafb502014-12-02 22:26:20 -0800174import org.onosproject.net.intent.constraint.WaypointConstraint;
175import org.onosproject.net.link.DefaultLinkDescription;
alshabib10c810b2015-08-18 16:59:04 -0700176import org.onosproject.net.meter.MeterId;
Sho SHIMIZUf33b8932016-01-25 18:43:32 -0800177import org.onosproject.net.newresource.ContinuousResource;
178import org.onosproject.net.newresource.ContinuousResourceId;
179import org.onosproject.net.newresource.DiscreteResource;
180import org.onosproject.net.newresource.DiscreteResourceId;
Sho SHIMIZU1f5e5912015-08-10 17:00:00 -0700181import org.onosproject.net.newresource.ResourceAllocation;
Sho SHIMIZU76b30f72016-01-11 14:08:35 -0800182import org.onosproject.net.newresource.ResourceId;
Sho SHIMIZU8fa670a2016-01-14 11:17:18 -0800183import org.onosproject.net.newresource.Resource;
Brian O'Connorabafb502014-12-02 22:26:20 -0800184import org.onosproject.net.packet.DefaultOutboundPacket;
alshabib42947782015-03-31 14:59:06 -0700185import org.onosproject.net.packet.DefaultPacketRequest;
186import org.onosproject.net.packet.PacketPriority;
Brian O'Connorabafb502014-12-02 22:26:20 -0800187import org.onosproject.net.provider.ProviderId;
Brian O'Connor6de2e202015-05-21 14:30:41 -0700188import org.onosproject.net.resource.link.BandwidthResource;
189import org.onosproject.net.resource.link.BandwidthResourceAllocation;
190import org.onosproject.net.resource.link.BandwidthResourceRequest;
191import org.onosproject.net.resource.link.DefaultLinkResourceAllocations;
192import org.onosproject.net.resource.link.DefaultLinkResourceRequest;
193import org.onosproject.net.resource.link.LambdaResource;
194import org.onosproject.net.resource.link.LambdaResourceAllocation;
195import org.onosproject.net.resource.link.LambdaResourceRequest;
196import org.onosproject.net.resource.link.LinkResourceRequest;
197import org.onosproject.net.resource.link.MplsLabel;
198import org.onosproject.net.resource.link.MplsLabelResourceAllocation;
199import org.onosproject.net.resource.link.MplsLabelResourceRequest;
Changhoon Yoone71dfa42015-12-04 21:49:25 +0900200import org.onosproject.security.Permission;
Brian O'Connorabafb502014-12-02 22:26:20 -0800201import org.onosproject.store.Timestamp;
Madan Jampani50589ac2015-06-08 11:38:46 -0700202import org.onosproject.store.service.MapEvent;
203import org.onosproject.store.service.SetEvent;
Madan Jampanie97fec42015-02-17 10:53:42 -0800204import org.onosproject.store.service.Versioned;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700205
Jonathan Hart45727852015-01-28 13:35:54 -0800206import java.net.URI;
207import java.time.Duration;
208import java.util.ArrayList;
209import java.util.Arrays;
210import java.util.Collections;
211import java.util.HashMap;
212import java.util.HashSet;
Sho SHIMIZU6c9e33a2016-01-07 18:45:27 -0800213import java.util.LinkedHashSet;
Jonathan Hart45727852015-01-28 13:35:54 -0800214import java.util.LinkedList;
215import java.util.Optional;
Madan Jampani86940d92015-05-06 11:47:57 -0700216import java.util.concurrent.ConcurrentHashMap;
217import java.util.concurrent.CopyOnWriteArraySet;
Madan Jampani6db0b442015-07-07 20:27:59 -0700218import java.util.concurrent.atomic.AtomicBoolean;
219import java.util.concurrent.atomic.AtomicInteger;
220import java.util.concurrent.atomic.AtomicLong;
Yuta HIGUCHI47c40882014-10-10 18:44:37 -0700221
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700222public final class KryoNamespaces {
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700223
Yuta HIGUCHI1aa249c2014-11-05 17:40:28 -0800224 public static final KryoNamespace BASIC = KryoNamespace.newBuilder()
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800225 .nextId(KryoNamespace.FLOATING_ID)
226 .register(byte[].class)
Madan Jampani6db0b442015-07-07 20:27:59 -0700227 .register(AtomicBoolean.class)
228 .register(AtomicInteger.class)
229 .register(AtomicLong.class)
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800230 .register(new ImmutableListSerializer(),
231 ImmutableList.class,
232 ImmutableList.of(1).getClass(),
233 ImmutableList.of(1, 2).getClass())
234 .register(new ImmutableSetSerializer(),
235 ImmutableSet.class,
236 ImmutableSet.of().getClass(),
237 ImmutableSet.of(1).getClass(),
238 ImmutableSet.of(1, 2).getClass())
239 .register(new ImmutableMapSerializer(),
240 ImmutableMap.class,
241 ImmutableMap.of().getClass(),
242 ImmutableMap.of("a", 1).getClass(),
243 ImmutableMap.of("R", 2, "D", 2).getClass())
244 .register(HashMap.class)
Madan Jampani86940d92015-05-06 11:47:57 -0700245 .register(ConcurrentHashMap.class)
246 .register(CopyOnWriteArraySet.class)
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800247 .register(ArrayList.class,
248 LinkedList.class,
Sho SHIMIZU6c9e33a2016-01-07 18:45:27 -0800249 HashSet.class,
250 LinkedHashSet.class
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800251 )
Madan Jampani3ca9cb62015-07-21 11:35:44 -0700252 .register(Maps.immutableEntry("a", "b").getClass())
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800253 .register(new ArraysAsListSerializer(), Arrays.asList().getClass())
254 .register(Collections.singletonList(1).getClass())
255 .register(Duration.class)
Yuta HIGUCHIae1d2102014-11-25 19:26:01 -0800256 .register(Collections.emptySet().getClass())
Sho SHIMIZU166e61e2015-01-21 18:07:12 -0800257 .register(Optional.class)
Jonathan Hart45727852015-01-28 13:35:54 -0800258 .register(Collections.emptyList().getClass())
Brian O'Connor72cb19a2015-01-16 16:14:41 -0800259 .register(Collections.unmodifiableSet(Collections.emptySet()).getClass())
Marc De Leenheer4a1c1fa2015-06-01 18:08:56 -0700260 .register(Collections.singleton(Object.class).getClass())
Yuta HIGUCHI1aa249c2014-11-05 17:40:28 -0800261 .build();
262
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700263 /**
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700264 * KryoNamespace which can serialize ON.lab misc classes.
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700265 */
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700266 public static final KryoNamespace MISC = KryoNamespace.newBuilder()
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800267 .nextId(KryoNamespace.FLOATING_ID)
268 .register(new IpPrefixSerializer(), IpPrefix.class)
269 .register(new Ip4PrefixSerializer(), Ip4Prefix.class)
270 .register(new Ip6PrefixSerializer(), Ip6Prefix.class)
271 .register(new IpAddressSerializer(), IpAddress.class)
272 .register(new Ip4AddressSerializer(), Ip4Address.class)
273 .register(new Ip6AddressSerializer(), Ip6Address.class)
274 .register(new MacAddressSerializer(), MacAddress.class)
Madan Jampani063949f2016-01-26 12:10:05 -0800275 .register(Match.class)
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -0700276 .register(VlanId.class)
Sho SHIMIZUdee78712015-04-30 09:33:52 -0700277 .register(Frequency.class)
Sho SHIMIZU63feca72015-05-07 10:44:25 -0700278 .register(Bandwidth.class)
Sho SHIMIZU31f37ed2016-01-08 18:45:54 -0800279 .register(Bandwidth.bps(1L).getClass())
280 .register(Bandwidth.bps(1.0).getClass())
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700281 .build();
282
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800283 /**
284 * Kryo registration Id for user custom registration.
285 */
286 public static final int BEGIN_USER_CUSTOM_ID = 300;
287
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700288 // TODO: Populate other classes
289 /**
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700290 * KryoNamespace which can serialize API bundle classes.
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700291 */
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700292 public static final KryoNamespace API = KryoNamespace.newBuilder()
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800293 .nextId(KryoNamespace.INITIAL_ID)
Yuta HIGUCHI1aa249c2014-11-05 17:40:28 -0800294 .register(BASIC)
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800295 .nextId(KryoNamespace.INITIAL_ID + 30)
296 .register(MISC)
Sho SHIMIZU31f37ed2016-01-08 18:45:54 -0800297 .nextId(KryoNamespace.INITIAL_ID + 30 + 20)
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700298 .register(
alshabib10c810b2015-08-18 16:59:04 -0700299 Instructions.MeterInstruction.class,
300 MeterId.class,
Thomas Vachuska90b453f2015-01-30 18:57:14 -0800301 Version.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700302 ControllerNode.State.class,
Thomas Vachuska90b453f2015-01-30 18:57:14 -0800303 ApplicationState.class,
Changhoon Yoon32b93702015-05-15 04:41:15 +0900304 ApplicationRole.class,
Thomas Vachuska90b453f2015-01-30 18:57:14 -0800305 DefaultApplication.class,
Changhoon Yoone71dfa42015-12-04 21:49:25 +0900306 Permission.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700307 Device.Type.class,
Thomas Vachuskad16ce182014-10-29 17:25:29 -0700308 Port.Type.class,
alshabib7911a052014-10-16 17:49:37 -0700309 ChassisId.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700310 DefaultControllerNode.class,
311 DefaultDevice.class,
Madan Jampani53e44e62014-10-07 12:39:51 -0700312 DefaultDeviceDescription.class,
Madan Jampani70583972015-06-30 11:25:05 -0700313 DefaultHost.class,
Madan Jampani2ff05592014-10-10 15:42:47 -0700314 DefaultLinkDescription.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700315 Port.class,
Madan Jampani53e44e62014-10-07 12:39:51 -0700316 DefaultPortDescription.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700317 Element.class,
Yuta HIGUCHI9ee60f62014-10-09 10:00:01 -0700318 Link.Type.class,
Thomas Vachuska57126fe2014-11-11 17:13:24 -0800319 Link.State.class,
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -0700320 Timestamp.class,
Madan Jampani1ee91782014-11-20 20:24:24 -0800321 Leadership.class,
322 LeadershipEvent.class,
323 LeadershipEvent.Type.class,
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -0700324 HostId.class,
325 HostDescription.class,
Madan Jampani38b250d2014-10-17 11:02:38 -0700326 DefaultHostDescription.class,
Madan Jampani117aaae2014-10-23 10:04:05 -0700327 DefaultFlowEntry.class,
328 StoredFlowEntry.class,
Yuta HIGUCHI2fcfde92014-10-20 18:37:14 -0700329 DefaultFlowRule.class,
alshabib3d643ec2014-10-22 18:33:00 -0700330 DefaultFlowEntry.class,
alshabib42947782015-03-31 14:59:06 -0700331 DefaultPacketRequest.class,
332 PacketPriority.class,
alshabibf6c2ede2014-10-22 23:31:50 -0700333 FlowEntry.FlowEntryState.class,
Yuta HIGUCHI2809bf32014-10-20 22:44:12 -0700334 FlowId.class,
Yuta HIGUCHI85d58d12014-10-20 23:59:44 -0700335 DefaultTrafficSelector.class,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700336 PortCriterion.class,
337 MetadataCriterion.class,
338 EthCriterion.class,
alshabibcaf1ca22015-06-25 15:18:16 -0700339 EthType.class,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700340 EthTypeCriterion.class,
341 VlanIdCriterion.class,
342 VlanPcpCriterion.class,
343 IPDscpCriterion.class,
344 IPEcnCriterion.class,
345 IPProtocolCriterion.class,
346 IPCriterion.class,
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700347 TpPort.class,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700348 TcpPortCriterion.class,
349 UdpPortCriterion.class,
350 SctpPortCriterion.class,
351 IcmpTypeCriterion.class,
352 IcmpCodeCriterion.class,
353 IPv6FlowLabelCriterion.class,
354 Icmpv6TypeCriterion.class,
355 Icmpv6CodeCriterion.class,
356 IPv6NDTargetAddressCriterion.class,
357 IPv6NDLinkLayerAddressCriterion.class,
358 MplsCriterion.class,
Charles Chan7ba33f42015-12-15 19:27:30 -0800359 MplsBosCriterion.class,
Hyunsun Moona08c5d02015-07-14 17:53:00 -0700360 TunnelIdCriterion.class,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700361 IPv6ExthdrFlagsCriterion.class,
362 LambdaCriterion.class,
Sho SHIMIZUefc2e282015-05-04 15:26:23 -0700363 IndexedLambdaCriterion.class,
Sho SHIMIZU084c4ca2015-05-04 11:52:51 -0700364 OchSignalCriterion.class,
Sho SHIMIZUb5e6de62015-05-04 12:13:44 -0700365 OchSignalTypeCriterion.class,
Yafit Hadar5796d972015-10-15 13:16:11 +0300366 OduSignalIdCriterion.class,
367 OduSignalTypeCriterion.class,
Hyunsun Moonc8fe98b2016-01-11 00:01:46 -0800368 ArpOpCriterion.class,
369 ArpHaCriterion.class,
370 ArpPaCriterion.class,
Yuta HIGUCHI85d58d12014-10-20 23:59:44 -0700371 Criterion.class,
372 Criterion.Type.class,
373 DefaultTrafficTreatment.class,
374 Instructions.DropInstruction.class,
Charles Chan7efabeb2015-09-28 15:12:19 -0700375 Instructions.NoActionInstruction.class,
Yuta HIGUCHI40d01772014-10-21 00:08:44 -0700376 Instructions.OutputInstruction.class,
Pavlin Radoslavov1d218662015-02-13 11:34:30 -0800377 Instructions.GroupInstruction.class,
Srikanth Vavilapalli23181912015-05-04 09:48:09 -0700378 Instructions.TableTypeTransition.class,
Jonathan Hart68fef9d2014-10-29 17:30:03 -0700379 L0ModificationInstruction.class,
380 L0ModificationInstruction.L0SubType.class,
381 L0ModificationInstruction.ModLambdaInstruction.class,
Sho SHIMIZUc6827092015-05-05 17:58:34 -0700382 L0ModificationInstruction.ModOchSignalInstruction.class,
Yafit Hadar5796d972015-10-15 13:16:11 +0300383 L1ModificationInstruction.class,
384 L1ModificationInstruction.L1SubType.class,
385 L1ModificationInstruction.ModOduSignalIdInstruction.class,
Jonathan Hart68fef9d2014-10-29 17:30:03 -0700386 L2ModificationInstruction.class,
387 L2ModificationInstruction.L2SubType.class,
388 L2ModificationInstruction.ModEtherInstruction.class,
Pavlin Radoslavov1d218662015-02-13 11:34:30 -0800389 L2ModificationInstruction.PushHeaderInstructions.class,
Jonathan Hart68fef9d2014-10-29 17:30:03 -0700390 L2ModificationInstruction.ModVlanIdInstruction.class,
391 L2ModificationInstruction.ModVlanPcpInstruction.class,
Saurav Das6c44a632015-05-30 22:05:22 -0700392 L2ModificationInstruction.PopVlanInstruction.class,
Pavlin Radoslavov1d218662015-02-13 11:34:30 -0800393 L2ModificationInstruction.ModMplsLabelInstruction.class,
Saurav Das8a0732e2015-11-20 15:27:53 -0800394 L2ModificationInstruction.ModMplsBosInstruction.class,
Pavlin Radoslavov1d218662015-02-13 11:34:30 -0800395 L2ModificationInstruction.ModMplsTtlInstruction.class,
Hyunsun Moona08c5d02015-07-14 17:53:00 -0700396 L2ModificationInstruction.ModTunnelIdInstruction.class,
Jonathan Hart68fef9d2014-10-29 17:30:03 -0700397 L3ModificationInstruction.class,
398 L3ModificationInstruction.L3SubType.class,
399 L3ModificationInstruction.ModIPInstruction.class,
Pavlin Radoslavovfebe82c2015-02-11 19:08:15 -0800400 L3ModificationInstruction.ModIPv6FlowLabelInstruction.class,
Pavlin Radoslavov1d218662015-02-13 11:34:30 -0800401 L3ModificationInstruction.ModTtlInstruction.class,
Hyunsun Moonc8bd97c2015-07-18 22:47:33 -0700402 L4ModificationInstruction.class,
403 L4ModificationInstruction.L4SubType.class,
404 L4ModificationInstruction.ModTransportPortInstruction.class,
Yuta HIGUCHI9def0472014-10-23 15:51:10 -0700405 RoleInfo.class,
Brian O'Connor72cb19a2015-01-16 16:14:41 -0800406 FlowRuleBatchEvent.class,
407 FlowRuleBatchEvent.Type.class,
408 FlowRuleBatchRequest.class,
Yuta HIGUCHI9def0472014-10-23 15:51:10 -0700409 FlowRuleBatchOperation.class,
Madan Jampani87e276b2015-06-02 10:49:47 -0700410 FlowRuleEvent.class,
411 FlowRuleEvent.Type.class,
Yuta HIGUCHI9def0472014-10-23 15:51:10 -0700412 CompletedBatchOperation.class,
413 FlowRuleBatchEntry.class,
Yuta HIGUCHI087019b2014-10-28 21:07:56 -0700414 FlowRuleBatchEntry.FlowRuleOperation.class,
415 IntentId.class,
416 IntentState.class,
Brian O'Connor4e6c17d2015-02-19 11:40:05 -0800417 //Key.class, is abstract
418 Key.of(1L, new DefaultApplicationId(0, "bar")).getClass(), //LongKey.class
419 Key.of("foo", new DefaultApplicationId(0, "bar")).getClass(), //StringKey.class
Yuta HIGUCHI087019b2014-10-28 21:07:56 -0700420 Intent.class,
421 ConnectivityIntent.class,
422 PathIntent.class,
423 DefaultPath.class,
424 DefaultEdgeLink.class,
425 HostToHostIntent.class,
426 PointToPointIntent.class,
Jonathan Hart68fef9d2014-10-29 17:30:03 -0700427 MultiPointToSinglePointIntent.class,
Michele Santuari4a338072014-11-05 18:38:55 +0100428 SinglePointToMultiPointIntent.class,
Brian O'Connora7515372015-03-25 14:45:34 -0700429 FlowRuleIntent.class,
Brian O'Connor41718fc2014-10-30 16:57:21 -0700430 LinkCollectionIntent.class,
431 OpticalConnectivityIntent.class,
432 OpticalPathIntent.class,
Marc De Leenheer8c2caac2015-05-28 16:37:33 -0700433 OpticalCircuitIntent.class,
Thomas Vachuska7d0032b2014-11-04 17:39:57 -0800434 LinkResourceRequest.class,
Yuta HIGUCHIadac04a2014-11-13 00:02:45 -0800435 DefaultLinkResourceRequest.class,
436 BandwidthResourceRequest.class,
437 LambdaResourceRequest.class,
Sho SHIMIZU94b7ff42015-05-06 17:51:49 -0700438 LambdaResource.class,
Sho SHIMIZU63feca72015-05-07 10:44:25 -0700439 BandwidthResource.class,
Yuta HIGUCHIadac04a2014-11-13 00:02:45 -0800440 DefaultLinkResourceAllocations.class,
441 BandwidthResourceAllocation.class,
442 LambdaResourceAllocation.class,
Sho SHIMIZU8fa670a2016-01-14 11:17:18 -0800443 Resource.class,
Sho SHIMIZUf33b8932016-01-25 18:43:32 -0800444 DiscreteResource.class,
445 ContinuousResource.class,
Sho SHIMIZU76b30f72016-01-11 14:08:35 -0800446 ResourceId.class,
Sho SHIMIZUf33b8932016-01-25 18:43:32 -0800447 DiscreteResourceId.class,
448 ContinuousResourceId.class,
Sho SHIMIZU1f5e5912015-08-10 17:00:00 -0700449 ResourceAllocation.class,
Sho SHIMIZUcd4bac82014-11-11 17:07:25 -0800450 // Constraints
Thomas Vachuska7d0032b2014-11-04 17:39:57 -0800451 LambdaConstraint.class,
452 BandwidthConstraint.class,
453 LinkTypeConstraint.class,
Sho SHIMIZUcd4bac82014-11-11 17:07:25 -0800454 LatencyConstraint.class,
455 WaypointConstraint.class,
456 ObstacleConstraint.class,
457 AnnotationConstraint.class,
Brian O'Connor72a034c2014-11-26 18:24:23 -0800458 BooleanConstraint.class,
Jonathan Hart96c5a4a2015-07-31 14:23:33 -0700459 PartialFailureConstraint.class,
jcc3d4e14a2015-04-21 11:32:05 +0800460 IntentOperation.class,
Marc De Leenheerbb382352015-04-23 18:20:34 -0700461 FlowRuleExtPayLoad.class,
462 Frequency.class,
Thomas Vachuskafdbc4c22015-05-29 15:53:01 -0700463 DefaultAnnotations.class,
464 PortStatistics.class,
Brian O'Connorce2d8b52015-07-29 16:24:13 -0700465 DefaultPortStatistics.class,
Srikanth Vavilapalli95810f52015-09-14 15:49:56 -0700466 IntentDomainId.class,
467 TableStatisticsEntry.class,
468 DefaultTableStatisticsEntry.class
Marc De Leenheerbb382352015-04-23 18:20:34 -0700469 )
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800470 .register(new DefaultApplicationIdSerializer(), DefaultApplicationId.class)
Jonathan Hartd9df7bd2015-11-10 17:10:25 -0800471 .register(new UriSerializer(), URI.class)
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800472 .register(new NodeIdSerializer(), NodeId.class)
473 .register(new ProviderIdSerializer(), ProviderId.class)
474 .register(new DeviceIdSerializer(), DeviceId.class)
475 .register(new PortNumberSerializer(), PortNumber.class)
476 .register(new DefaultPortSerializer(), DefaultPort.class)
477 .register(new LinkKeySerializer(), LinkKey.class)
478 .register(new ConnectPointSerializer(), ConnectPoint.class)
479 .register(new DefaultLinkSerializer(), DefaultLink.class)
480 .register(new MastershipTermSerializer(), MastershipTerm.class)
481 .register(new HostLocationSerializer(), HostLocation.class)
482 .register(new DefaultOutboundPacketSerializer(), DefaultOutboundPacket.class)
Ayaka Koshibe08e457a2015-06-25 17:11:54 -0700483 .register(new AnnotationsSerializer(), DefaultAnnotations.class)
Jonathan Hart3c259162015-10-21 21:31:19 -0700484 .register(new ExtensionInstructionSerializer(), Instructions.ExtensionInstructionWrapper.class)
alshabib880b6442015-11-23 22:13:04 -0800485 .register(ExtensionTreatmentType.class)
Madan Jampanie97fec42015-02-17 10:53:42 -0800486 .register(Versioned.class)
Madan Jampani50589ac2015-06-08 11:38:46 -0700487 .register(MapEvent.class)
488 .register(MapEvent.Type.class)
489 .register(SetEvent.class)
490 .register(SetEvent.Type.class)
Yuta HIGUCHIf6171232014-11-25 15:14:44 -0800491 .register(DefaultGroupId.class)
Marc De Leenheerbb382352015-04-23 18:20:34 -0700492 .register(Annotations.class)
493 .register(OmsPort.class)
494 .register(OchPort.class)
Sho SHIMIZU014c33a2015-04-30 11:40:37 -0700495 .register(OduSignalType.class)
Ayaka Koshibebcb02372015-06-01 10:56:42 -0700496 .register(OchSignalType.class)
Sho SHIMIZU014c33a2015-04-30 11:40:37 -0700497 .register(GridType.class)
498 .register(ChannelSpacing.class)
Marc De Leenheerbb382352015-04-23 18:20:34 -0700499 .register(OduCltPort.class)
Toru Furusawa72ee30c2016-01-08 13:29:04 -0800500 .register(CltSignalType.class)
Sho SHIMIZU91210a72015-04-29 12:54:28 -0700501 .register(IndexedLambda.class)
502 .register(OchSignal.class)
Yafit Hadar5796d972015-10-15 13:16:11 +0300503 .register(OduSignalId.class)
Marc De Leenheer01cb1a92015-05-13 09:23:44 -0700504 .register(OduCltPortDescription.class)
505 .register(OchPortDescription.class)
506 .register(OmsPortDescription.class)
Rimon Ashkenazye2410ff2015-11-10 14:11:08 +0200507 .register(TributarySlot.class)
Michele Santuari4b6019e2014-12-19 11:31:45 +0100508 .register(
509 MplsIntent.class,
510 MplsPathIntent.class,
511 MplsLabelResourceAllocation.class,
512 MplsLabelResourceRequest.class,
513 MplsLabel.class,
sanghob35a6192015-04-01 13:05:26 -0700514 org.onlab.packet.MplsLabel.class,
515 org.onlab.packet.MPLS.class
Marc De Leenheerbb382352015-04-23 18:20:34 -0700516 )
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700517
518 .build();
519
520
521 // not to be instantiated
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700522 private KryoNamespaces() {}
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700523}