/* * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.openflowjava.protocol.impl.deserialization; import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry; import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.BarrierReplyMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.EchoReplyMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.EchoRequestMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.ErrorMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.ExperimenterMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.FeaturesReplyMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.FlowRemovedMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.GetAsyncReplyMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.GetConfigReplyMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.HelloMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.MultipartReplyMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.OF10ErrorMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.OF10FeaturesReplyMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.OF10FlowRemovedMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.OF10HelloMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.OF10PacketInMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.OF10PortStatusMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.OF10QueueGetConfigReplyMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.OF10StatsReplyMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.PacketInMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.PortStatusMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.QueueGetConfigReplyMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.RoleReplyMessageFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.VendorMessageFactory; import org.opendaylight.openflowjava.protocol.impl.util.SimpleDeserializerRegistryHelper; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.BarrierOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoRequestMessage; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessage; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterMessage; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowRemovedMessage; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetAsyncOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetConfigOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetQueueConfigOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloMessage; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessage; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketInMessage; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortStatusMessage; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.RoleRequestOutput; /** * Util class for init registration of deserializers. * @author michal.polkorab */ public final class MessageDeserializerInitializer { private MessageDeserializerInitializer() { throw new UnsupportedOperationException("Utility class shouldn't be instantiated"); } /** * Registers message deserializers. * @param registry registry to be filled with deserializers */ public static void registerMessageDeserializers(final DeserializerRegistry registry) { SimpleDeserializerRegistryHelper helper; // register OF v1.0 message deserializers helper = new SimpleDeserializerRegistryHelper(EncodeConstants.OF10_VERSION_ID, registry); helper.registerDeserializer(0, HelloMessage.class, new OF10HelloMessageFactory()); helper.registerDeserializer(1, ErrorMessage.class, new OF10ErrorMessageFactory()); helper.registerDeserializer(2, EchoRequestMessage.class, new EchoRequestMessageFactory()); helper.registerDeserializer(3, EchoOutput.class, new EchoReplyMessageFactory()); helper.registerDeserializer(4, ExperimenterMessage.class, new VendorMessageFactory()); helper.registerDeserializer(6, GetFeaturesOutput.class, new OF10FeaturesReplyMessageFactory()); helper.registerDeserializer(8, GetConfigOutput.class, new GetConfigReplyMessageFactory()); helper.registerDeserializer(10, PacketInMessage.class, new OF10PacketInMessageFactory()); helper.registerDeserializer(11, FlowRemovedMessage.class, new OF10FlowRemovedMessageFactory()); helper.registerDeserializer(12, PortStatusMessage.class, new OF10PortStatusMessageFactory()); helper.registerDeserializer(17, MultipartReplyMessage.class, new OF10StatsReplyMessageFactory()); helper.registerDeserializer(19, BarrierOutput.class, new BarrierReplyMessageFactory()); helper.registerDeserializer(21, GetQueueConfigOutput.class, new OF10QueueGetConfigReplyMessageFactory()); // register OF v1.3 message deserializers helper = new SimpleDeserializerRegistryHelper(EncodeConstants.OF13_VERSION_ID, registry); helper.registerDeserializer(0, HelloMessage.class, new HelloMessageFactory()); helper.registerDeserializer(1, ErrorMessage.class, new ErrorMessageFactory()); helper.registerDeserializer(2, EchoRequestMessage.class, new EchoRequestMessageFactory()); helper.registerDeserializer(3, EchoOutput.class, new EchoReplyMessageFactory()); helper.registerDeserializer(4, ExperimenterMessage.class, new ExperimenterMessageFactory()); helper.registerDeserializer(6, GetFeaturesOutput.class, new FeaturesReplyMessageFactory()); helper.registerDeserializer(8, GetConfigOutput.class, new GetConfigReplyMessageFactory()); helper.registerDeserializer(10, PacketInMessage.class, new PacketInMessageFactory()); helper.registerDeserializer(11, FlowRemovedMessage.class, new FlowRemovedMessageFactory()); helper.registerDeserializer(12, PortStatusMessage.class, new PortStatusMessageFactory()); helper.registerDeserializer(19, MultipartReplyMessage.class, new MultipartReplyMessageFactory()); helper.registerDeserializer(21, BarrierOutput.class, new BarrierReplyMessageFactory()); helper.registerDeserializer(23, GetQueueConfigOutput.class, new QueueGetConfigReplyMessageFactory()); helper.registerDeserializer(25, RoleRequestOutput.class, new RoleReplyMessageFactory()); helper.registerDeserializer(27, GetAsyncOutput.class, new GetAsyncReplyMessageFactory()); // register OF v1.4 message deserializers helper = new SimpleDeserializerRegistryHelper(EncodeConstants.OF14_VERSION_ID, registry); helper.registerDeserializer(0, HelloMessage.class, new HelloMessageFactory()); helper.registerDeserializer(2, EchoRequestMessage.class, new EchoRequestMessageFactory()); helper.registerDeserializer(3, EchoOutput.class, new EchoReplyMessageFactory()); helper.registerDeserializer(8, GetConfigOutput.class, new GetConfigReplyMessageFactory()); helper.registerDeserializer(21, BarrierOutput.class, new BarrierReplyMessageFactory()); // register OF v1.5 message deserializers helper = new SimpleDeserializerRegistryHelper(EncodeConstants.OF15_VERSION_ID, registry); helper.registerDeserializer(0, HelloMessage.class, new HelloMessageFactory()); helper.registerDeserializer(2, EchoRequestMessage.class, new EchoRequestMessageFactory()); helper.registerDeserializer(3, EchoOutput.class, new EchoReplyMessageFactory()); helper.registerDeserializer(8, GetConfigOutput.class, new GetConfigReplyMessageFactory()); helper.registerDeserializer(21, BarrierOutput.class, new BarrierReplyMessageFactory()); } }