2 * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved.
\r
4 * This program and the accompanying materials are made available under the
\r
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
\r
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
\r
9 package org.opendaylight.openflowjava.protocol.api.extensibility;
\r
11 import org.opendaylight.openflowjava.protocol.api.keys.MatchEntrySerializerKey;
\r
12 import org.opendaylight.openflowjava.protocol.api.keys.experimenter.ExperimenterActionSerializerKey;
\r
13 import org.opendaylight.openflowjava.protocol.api.keys.experimenter.ExperimenterIdSerializerKey;
\r
14 import org.opendaylight.openflowjava.protocol.api.keys.experimenter.ExperimenterInstructionSerializerKey;
\r
15 import org.opendaylight.openflowjava.protocol.api.keys.experimenter.ExperimenterSerializerKey;
\r
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.MatchField;
\r
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.OxmClassBase;
\r
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterInput;
\r
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenterCase;
\r
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestExperimenterCase;
\r
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.table.features.properties.grouping.TableFeatureProperties;
\r
25 * Provides methods for serialization part of extensibility.
\r
26 * In case of handling multiple structures of same type (actions,
\r
27 * instructions, match entries, ... ) which are differentiated by
\r
28 * vendor / experimenter subtype, vendor has to switch / choose between
\r
29 * these subtypes. <br />
\r
31 * This has to be done in this way because of unknown augmentations
\r
32 * - that's why vendor has to handle it in his own implementations.
\r
33 * @author michal.polkorab
\r
35 public interface SerializerExtensionProvider {
\r
38 * Unregisters custom serializer
\r
39 * @param key used for serializer lookup
\r
40 * @return true if serializer was removed,
\r
41 * false if no serializer was found under specified key
\r
43 boolean unregisterSerializer(ExperimenterSerializerKey key);
\r
46 * Registers action serializer
\r
47 * @param key used for serializer lookup
\r
48 * @param serializer serializer implementation
\r
50 void registerActionSerializer(ExperimenterActionSerializerKey key,
\r
51 OFGeneralSerializer serializer);
\r
54 * Registers instruction serializer
\r
55 * @param key used for serializer lookup
\r
56 * @param serializer serializer implementation
\r
58 void registerInstructionSerializer(ExperimenterInstructionSerializerKey key,
\r
59 OFGeneralSerializer serializer);
\r
62 * Registers match entry serializer
\r
63 * @param key used for serializer lookup
\r
64 * @param serializer serializer implementation
\r
66 <OXMCLASS extends OxmClassBase, OXMTYPE extends MatchField> void registerMatchEntrySerializer(
\r
67 MatchEntrySerializerKey<OXMCLASS, OXMTYPE> key,OFGeneralSerializer serializer);
\r
70 * Registers experimenter (vendor) message serializer
\r
71 * @param key used for serializer lookup
\r
72 * @param serializer serializer implementation
\r
74 void registerExperimenterMessageSerializer(ExperimenterIdSerializerKey<ExperimenterInput> key,
\r
75 OFSerializer<ExperimenterInput> serializer);
\r
78 * Registers multipart-request (stats-request) serializer
\r
79 * @param key used for serializer lookup
\r
80 * @param serializer serializer implementation
\r
82 void registerMultipartRequestSerializer(ExperimenterIdSerializerKey<MultipartRequestExperimenterCase> key,
\r
83 OFSerializer<MultipartRequestExperimenterCase> serializer);
\r
86 * Registers multipart-request table-features serializer
\r
87 * @param key used for serializer lookup
\r
88 * @param serializer serializer implementation
\r
90 void registerMultipartRequestTFSerializer(ExperimenterIdSerializerKey<TableFeatureProperties> key,
\r
91 OFGeneralSerializer serializer);
\r
94 * Registers meter band serializer (used in meter-mod messages)
\r
95 * @param key used for serializer lookup
\r
96 * @param serializer serializer implementation
\r
98 void registerMeterBandSerializer(ExperimenterIdSerializerKey<MeterBandExperimenterCase> key,
\r
99 OFSerializer<MeterBandExperimenterCase> serializer);
\r