Merge "Fixing OF Multipart messages 1) So we have a MultipartRequestDesc message...
authorAdam Brcek <adam.brcek@pantheon.sk>
Sat, 16 Nov 2013 21:44:21 +0000 (21:44 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Sat, 16 Nov 2013 21:44:21 +0000 (21:44 +0000)
103 files changed:
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/Activator.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/ConnectionAdapterImpl.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/ConnectionFacade.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/MessageConsumer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/OnlineProvider.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/RpcResponseKey.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/ServerFacade.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/ShutdownProvider.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/SwitchConnectionProviderImpl.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/DelegatingInboundHandler.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/IdleHandler.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/OF13Decoder.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/OF13Encoder.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/OFFrameDecoder.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/OFVersionDetector.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/PublishingChannelInitializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/VersionMessageWrapper.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/DecoderTable.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/DeserializationFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/MessageTypeCodeKey.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/OFDeserializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/BarrierReplyMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/EchoReplyMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/EchoRequestMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/ErrorMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/ExperimenterMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/FeaturesReplyMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/FlowRemovedMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/GetAsyncReplyMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/GetConfigReplyMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/HelloMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/MultipartReplyMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/OF10BarrierReplyMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/OF10EchoReplyMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/OF10EchoRequestMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/OF10ErrorMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/OF10FeaturesReplyMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/OF10FlowRemovedMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/OF10GetConfigReplyMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/OF10HelloMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/OF10PacketInMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/OF10PortStatusMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/OF10QueueGetConfigReplyMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/OF10StatsReplyMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/OF10VendorMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/PacketInMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/PortStatusMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/QueueGetConfigReplyMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/RoleReplyMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/EncoderTable.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/MessageTypeKey.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/OFSerializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/SerializationFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/BarrierInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/EchoInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/EchoReplyInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/EncodeConstants.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/ExperimenterInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/FlowModInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/GetAsyncRequestMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/GetConfigInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/GetFeaturesInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/GetQueueConfigInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/GroupModInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/HelloInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/MeterModInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/MultipartRequestMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10BarrierInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10EchoInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10EchoReplyInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10FeaturesInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10FlowModInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10GetConfigInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10HelloInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10PacketOutInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10PortModInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10QueueGetConfigInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10SetConfigMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10StatsRequestMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10VendorInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/PacketOutInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/PortModInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/RoleRequestInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/SetAsyncInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/SetConfigMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/TableModInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/ActionsDeserializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/ActionsSerializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/ByteBufUtils.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/InstructionsDeserializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/InstructionsSerializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/MatchDeserializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/MatchSerializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF10ActionsDeserializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF10ActionsSerializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF10MatchDeserializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF10MatchSerializer.java
openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/FlowModInputMessageFactoryTest.java
openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/PacketOutInputMessageFactoryTest.java
openflow-protocol-it/src/test/java/org/opendaylight/openflowjava/protocol/impl/integration/MockPlugin.java
simple-client/src/main/java/org/opendaylight/openflowjava/protocol/impl/clients/SimpleClientFramer.java [new file with mode: 0644]
simple-client/src/main/java/org/opendaylight/openflowjava/protocol/impl/clients/SimpleClientHandler.java
simple-client/src/main/java/org/opendaylight/openflowjava/protocol/impl/clients/SimpleClientInitializer.java

index 022cc8eaccc344083ad5976099400737a44cb23a..59d4a85c6fc55627a1ae0ceff8ad0f85e6936589 100644 (file)
@@ -11,7 +11,7 @@ import org.slf4j.LoggerFactory;
 
 
 /**
- * Activate library bundle, expose provided implementations:
+ * Activates library bundle, exposes provided implementations:
  * <ul>
  *  <li>{@link SwitchConnectionProviderImpl}</li>
  * </ul>
index c4651e9b0144f7206510184bc5a2fd1030f94def..3c83945b93798d2dec8d116345826dbe47d790c0 100644 (file)
@@ -73,6 +73,7 @@ import com.google.common.collect.Lists;
 import com.google.common.util.concurrent.SettableFuture;
 
 /**
+ * Handles messages (notifications + rpcs) and connections
  * @author mirehak
  * @author michal.polkorab
  */
index 29348362dbba66d876aa44e2b4dd3669dc55672d..3e72d7864fba3fcd70c796d1b02fd4ecf4dd4d2c 100644 (file)
@@ -6,7 +6,6 @@ import org.opendaylight.openflowjava.protocol.api.connection.ConnectionAdapter;
 \r
 /**\r
  * @author michal.polkorab\r
- *\r
  */\r
 public interface ConnectionFacade extends MessageConsumer, ConnectionAdapter {\r
 \r
index 8a7bb5efa2ef767ae2ae606443ebface53e6aca0..7bd4f3605a163e3ea9855a79fcc0ffc112001f8f 100644 (file)
@@ -7,7 +7,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 
 /**
  * @author mirehak
- *
  */
 public class RpcResponseKey {
     
index dda56a520ab5439e9cbedf2136c236a869f2698c..1d089921b8e240d6b6f2b8ed299b1ec7c7910588 100644 (file)
@@ -4,7 +4,6 @@ package org.opendaylight.openflowjava.protocol.impl.connection;
 
 /**
  * @author mirehak
- *
  */
 public interface ServerFacade extends ShutdownProvider, OnlineProvider, Runnable {
 
index cb58d14e66ee489e6c5272716504b866c3889cdb..fe05db416b1f43e05c00b84632c753278b615ce6 100644 (file)
@@ -21,6 +21,7 @@ import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
 
 /**
+ * Exposed class for server handling
  * @author mirehak
  * @author michal.polkorab
  */
@@ -109,6 +110,9 @@ public class SwitchConnectionProviderImpl implements SwitchConnectionProvider {
         return result;
     }
 
+    /**
+     * @return servers
+     */
     public Set<ServerFacade> getServerLot() {
         return serverLot;
     }
index 4b5bff3d58e54fca51dfac2262b1405b6d204272..e0daecb2620c1acda34bcbfdda033dfac95d54f5 100644 (file)
@@ -4,6 +4,7 @@ package org.opendaylight.openflowjava.protocol.impl.core;
 import io.netty.channel.ChannelHandlerContext;\r
 import io.netty.channel.ChannelInboundHandlerAdapter;\r
 \r
+import org.opendaylight.openflowjava.protocol.impl.connection.ConnectionAdapterImpl;\r
 import org.opendaylight.openflowjava.protocol.impl.connection.MessageConsumer;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.DisconnectEventBuilder;\r
 import org.opendaylight.yangtools.yang.binding.DataObject;\r
@@ -11,8 +12,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;\r
 \r
 /**\r
+ * Holds reference to {@link ConnectionAdapterImpl} and passes messages for further processing.\r
+ * Also informs on switch disconnection.\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class DelegatingInboundHandler extends ChannelInboundHandlerAdapter {\r
 \r
index b31a021dd1b57081c86db68f22e8afad3e9b9720..8d5ca853c8f992d6ac632f62d1dfc89d9c2887d5 100644 (file)
@@ -13,16 +13,14 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * 
+ * Detects idle state of switch and informs upper layers
  * @author michal.polkorab
- *
  */
 public class IdleHandler extends IdleStateHandler{
 
     private static final Logger LOGGER = LoggerFactory.getLogger(IdleHandler.class);
 
     /**
-     * 
      * @param readerIdleTime
      * @param writerIdleTime
      * @param allIdleTime
index 11f8f55957b727575eff1f370180303077f90986..5d13e2d3c424c01c1130cf610fd8cf6e9aa53f85 100644 (file)
@@ -13,7 +13,6 @@ import org.slf4j.LoggerFactory;
 \r
 /**\r
  * Transforms OpenFlow Protocol messages to POJOs\r
- *\r
  * @author michal.polkorab\r
  */\r
 public class OF13Decoder extends MessageToMessageDecoder<VersionMessageWrapper> {\r
index 3f3c05ab65730ecdacd7cf4cdf1ad218f2444856..d6fd014ae41f2d47cf80262c331a59e9f421f3b6 100644 (file)
@@ -12,8 +12,8 @@ import io.netty.handler.codec.MessageToByteEncoder;
 \r
 /**\r
  * Transforms OpenFlow Protocol messages to POJOs\r
- * \r
  * @author michal.polkorab\r
+ * @author timotej.kubas\r
  */\r
 public class OF13Encoder extends MessageToByteEncoder<OfHeader> {\r
 \r
@@ -23,6 +23,7 @@ public class OF13Encoder extends MessageToByteEncoder<OfHeader> {
     public OF13Encoder() {\r
         LOGGER.debug("Creating OF13Encoder");\r
     }\r
+    \r
     @Override\r
     protected void encode(ChannelHandlerContext ctx, OfHeader msg, ByteBuf out)\r
             throws Exception {\r
index 4a81194be39cddea47ce09508c2394df7b836ff7..300e3373bd0bd7873925eeabf065903014e6d349 100644 (file)
@@ -12,8 +12,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Class for decoding incoming messages into message frames.
- *
+ * Decodes incoming messages into message frames.
  * @author michal.polkorab
  */
 public class OFFrameDecoder extends ByteToMessageDecoder {
index d5b31e261651088f868119c68713856a961298e5..bfa21900f647e7ca21186a302dbe48b6c23788e5 100644 (file)
@@ -11,9 +11,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Class that detects version of used OpenFlow Protocol and engages right OFCodec into
- * pipeline.
- *
+ * Detects version of used OpenFlow Protocol and discards unsupported version messages
  * @author michal.polkorab
  */
 public class OFVersionDetector extends ByteToMessageDecoder {
index 930688305573998bfa3cd57f07cd7f9c7449731e..cc11a28db51865192576b757d50239f362833581 100644 (file)
@@ -18,8 +18,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
+ * Initializes the channel
  * @author michal.polkorab
- *
  */
 public class PublishingChannelInitializer extends ChannelInitializer<SocketChannel> {
 
index d5ebf9ded531c0eaad414fb0249a2b8cc124c673..fc41b8e7148df403e8f7ecfbb6b4f9ff5df587e7 100644 (file)
@@ -4,8 +4,8 @@ package org.opendaylight.openflowjava.protocol.impl.core;
 import io.netty.buffer.ByteBuf;\r
 \r
 /**\r
+ * Wraps received messages (includes version)\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class VersionMessageWrapper {\r
 \r
index 97341a9389582611d04e051d626617c3e7f10a8a..f2bea2b9797e81ddfb2c759a2e457889709d2909 100644 (file)
@@ -35,6 +35,7 @@ import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.Que
 import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.RoleReplyMessageFactory;\r
 \r
 /**\r
+ * Stores and provides correct decoders for received messages\r
  * @author michal.polkorab\r
  * \r
  *  <pre>         \r
index 14538fab5df9b0d925daf9c4b7c4d78af5c887ec..db137fb7dd54d97c37eb50dd21c418c5dfec5574 100644 (file)
@@ -8,8 +8,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;\r
 \r
 /**\r
- *\r
  * @author michal.polkorab\r
+ * @author timotej.kubas\r
  */\r
 public abstract class DeserializationFactory {\r
     \r
index 7adc8623fcb87465bee4e65433a7add398e25e69..dd71c4a2e5c9d4115be4d5d27b2e3e4ad0f600ee 100644 (file)
@@ -1,9 +1,11 @@
 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */\r
 package org.opendaylight.openflowjava.protocol.impl.deserialization;\r
 \r
+\r
 /**\r
+ * Class used as a key in {@link DecoderTable}\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  */\r
 public class MessageTypeCodeKey {\r
 \r
index 0ea40eece33ff327ae6761f2307f2dc9646b3ff5..8f64ed3dea80bdf4fa648c3889b4089d00129bb5 100644 (file)
@@ -6,8 +6,9 @@ import org.opendaylight.yangtools.yang.binding.DataObject;
 import io.netty.buffer.ByteBuf;\r
 \r
 /**\r
+ * Uniform interface for deserializing factories\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  * @param <E> message code type\r
  */\r
 public interface OFDeserializer<E extends DataObject> {\r
index 6fccd1a27e20c48af6c7adce3e63c857cf1e6b4f..aa39b2dafac580744c83f8e49a7a477059082f14 100644 (file)
@@ -8,9 +8,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.BarrierOutputBuilder;
 
 /**
+ * Translates BarrierReply messages
  * @author michal.polkorab
  * @author timotej.kubas
- * 
  */
 public class BarrierReplyMessageFactory implements
         OFDeserializer<BarrierOutput> {
index 5e0a9ebee3722d08ba648453b7f7ad8c0e1767cb..163a89c427336b624d2e8ee99b461d62793924a8 100644 (file)
@@ -8,8 +8,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoOutputBuilder;\r
 \r
 /**\r
+ * Translates EchoReply messages\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  */\r
 public class EchoReplyMessageFactory implements OFDeserializer<EchoOutput> {\r
 \r
index 121263d42c1453458c04c2d9c8dc40cd6e70755f..e736203903bfd47e2e2444018c7549ccf6f811fb 100644 (file)
@@ -8,8 +8,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoRequestMessageBuilder;\r
 \r
 /**\r
+ * Translates EchoRequest messages\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  */\r
 public class EchoRequestMessageFactory implements OFDeserializer<EchoRequestMessage>{\r
 \r
index 3b7970a4c53e81c391bece840b90b5f7e02a6944..f66a54dc27ca23495a0fea3277cf479ab1395d98 100644 (file)
@@ -9,8 +9,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessageBuilder;\r
 \r
 /**\r
+ * Translates Error messages\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  */\r
 public class ErrorMessageFactory implements OFDeserializer<ErrorMessage> {\r
 \r
index be1391ec1550f6a14feaf38b0cf038936ba3af50..f12985919e494177e84b8ee202bf09b1b2125a54 100644 (file)
@@ -8,10 +8,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterMessageBuilder;
 
 /**
- * 
+ * Translates Experimenter messages
  * @author michal.polkorab, 
  * @author timotej.kubas
- *
  */
 public class ExperimenterMessageFactory implements OFDeserializer<ExperimenterMessage>{
 
index d83eb2029b277b1097bea1e6838456c6c1c07497..8ab3ae80d0eb497bd114d6a36e385e748e0119be 100644 (file)
@@ -11,8 +11,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutputBuilder;\r
 \r
 /**\r
+ * Translates FeaturesReply messages\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  */\r
 public class FeaturesReplyMessageFactory implements OFDeserializer<GetFeaturesOutput>{\r
     \r
index 0245081ae3ce2907a01ef49b30eeb9be53ad03ea..4cd2902ec5c50dea85a43e6560389e7cc5419d55 100644 (file)
@@ -12,6 +12,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowRemovedMessageBuilder;
 
 /**
+ * Translates FlowRemoved messages
  * @author michal.polkorab
  * @author timotej.kubas
  */
index d17c363efbb2f12e9ac2209cb997c53d3ede52a8..9228eae7ff0e1e2eeb33c3c13d90c41cadfeee2d 100644 (file)
@@ -20,10 +20,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.get.async.reply.PortStatusMaskBuilder;\r
 \r
 /**\r
+ * Translates GetAsyncReply messages\r
  * @author timotej.kubas\r
  * @author michal.polkorab\r
  */\r
 public class GetAsyncReplyMessageFactory implements OFDeserializer<GetAsyncOutput> {\r
+    \r
     private static GetAsyncReplyMessageFactory instance;\r
     \r
     private GetAsyncReplyMessageFactory() {\r
index 5235d3fbbe3128252d8f7ad32978fa3511a4be27..dc56a5b94faab48ea18c8ecbd330da645dccd2d3 100644 (file)
@@ -9,6 +9,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetConfigOutputBuilder;
 
 /**
+ * Translates GetConfigReply messages
  * @author michal.polkorab
  * @author timotej.kubas
  */
index 4f8113ee9d6e3c55e958579c2bcc7779c734bfb1..4c362d22f42aa7527c8c691f3408a71656b56ce5 100644 (file)
@@ -16,8 +16,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.hello.ElementsBuilder;\r
 \r
 /**\r
+ * Translates Hello messages\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  */\r
 public class HelloMessageFactory implements OFDeserializer<HelloMessage> {\r
 \r
index 34c1497da11bd7a642c9c63ad829cce9263d0ce0..2af5052ef3ac7604b727853048883e4d213f58c5 100644 (file)
@@ -8,8 +8,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.BarrierOutputBuilder;\r
 \r
 /**\r
+ * Translates BarrierReply messages (OpenFlow v1.0)\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10BarrierReplyMessageFactory implements OFDeserializer<BarrierOutput> {\r
 \r
index 6702f4c97f2fa1f6b7735bb4fbf42fd71d5b07e2..21eb118e6a5baf2afc941670b9908d288d90572d 100644 (file)
@@ -8,8 +8,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoOutputBuilder;\r
 \r
 /**\r
+ * Translates EchoReply messages (OpenFlow v1.0)\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10EchoReplyMessageFactory implements OFDeserializer<EchoOutput> {\r
 \r
index 5741492d5a8905c079eb461fe36199511359a597..e41ffd7a4107a2b7b4381c6c3f6c99e9bad398e5 100644 (file)
@@ -8,8 +8,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoRequestMessageBuilder;\r
 \r
 /**\r
+ * Translates EchoRequest messages (OpenFlow v1.0)\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10EchoRequestMessageFactory implements OFDeserializer<EchoRequestMessage> {\r
 \r
index 2760848989253151143a3c36c3de64e6f364c6ec..383bd7e5319e22d662c20950ea8c7355b3f5f0ff 100644 (file)
@@ -9,8 +9,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessageBuilder;\r
 \r
 /**\r
+ * Translates Error messages (OpenFlow v1.0)\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10ErrorMessageFactory implements OFDeserializer<ErrorMessage> {\r
 \r
index 9a82c776695e288774f0581f8362988da81ebacd..a73466bba7eb858e59c834f068151daf5dd3c1e6 100644 (file)
@@ -16,8 +16,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutputBuilder;\r
 \r
 /**\r
+ * Translates FeaturesReply messages (OpenFlow v1.0)\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10FeaturesReplyMessageFactory implements OFDeserializer<GetFeaturesOutput> {\r
     \r
index fc2e374af2ab3f5a80bcf6ee1e95b5fa3fd33c1d..b25b993a98e475432dbdae30e3268c5ba0ef58d8 100644 (file)
@@ -12,8 +12,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowRemovedMessageBuilder;\r
 \r
 /**\r
+ * Translates FlowRemoved messages (OpenFlow v1.0)\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10FlowRemovedMessageFactory implements OFDeserializer<FlowRemovedMessage> {\r
 \r
index 4dfe0435ba5f2cf02569d55a73bde1fbdf608880..44fd5d7892ee5ad4825b937576aa963609da26f2 100644 (file)
@@ -9,8 +9,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetConfigOutputBuilder;\r
 \r
 /**\r
+ * Translates GetConfigReply messages (OpenFlow v1.0)\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10GetConfigReplyMessageFactory implements OFDeserializer<GetConfigOutput> {\r
     \r
index 2d94304b765ac1f419d5570e5f87a3b3a8cfd1f2..0301b80335bdb786bef3f1dd41a86d331d589bec 100644 (file)
@@ -8,8 +8,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloMessageBuilder;\r
 \r
 /**\r
+ * Translates Hello messages (OpenFlow v1.0)\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10HelloMessageFactory implements OFDeserializer<HelloMessage> {\r
     \r
index b2fdf78666272d108baf01bd0d4d0fd620680c5c..5ad3efcb567609e9d0f5033ba6473dacd301843b 100644 (file)
@@ -8,8 +8,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketInMessageBuilder;\r
 \r
 /**\r
+ * Translates PacketIn messages (OpenFlow v1.0)\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10PacketInMessageFactory implements OFDeserializer<PacketInMessage> {\r
 \r
index c04457f1dabebf9e0d93f8b74d8c45a04b634645..9275f3c309799e380cdbadc3de9f62b0ccd869f3 100644 (file)
@@ -13,8 +13,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortStatusMessageBuilder;\r
 \r
 /**\r
+ * Translates PortStatus messages (OpenFlow v1.0)\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10PortStatusMessageFactory implements OFDeserializer<PortStatusMessage> {\r
 \r
index 10e9e397cf4ff07179af664ffb26068554b0721a..3418e697fd2c4162fa0840b5179eb116754545f2 100644 (file)
@@ -20,8 +20,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.queue.property.header.QueuePropertyBuilder;\r
 \r
 /**\r
+ * Translates QueueGetConfigReply messages (OpenFlow v1.0)\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10QueueGetConfigReplyMessageFactory implements OFDeserializer<GetQueueConfigOutput> {\r
 \r
index 8b8e2fa60268b34cdf801f83eaaa777758fb17f3..75517fc1ce2c6e8c4b378c40455210329e95f4a3 100644 (file)
@@ -38,8 +38,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.table.TableStatsBuilder;\r
 \r
 /**\r
+ * Translates StatsReply messages (OpenFlow v1.0)\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10StatsReplyMessageFactory implements OFDeserializer<MultipartReplyMessage> {\r
 \r
index a89a2b28f08cdf855f3472d1336beec7d381f9d6..e0fbe7aa238a369fa56b90c64cb3675834823d94 100644 (file)
@@ -8,8 +8,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterMessageBuilder;\r
 \r
 /**\r
+ * Translates Vendor messages (OpenFlow v1.0)\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10VendorMessageFactory implements OFDeserializer<ExperimenterMessage> {\r
 \r
index ba84fe8667ba7ebf5023ad692b058af27ef6fd34..04fe26946d99769f9ec6a411d7ce764f10893629 100644 (file)
@@ -12,6 +12,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketInMessageBuilder;
 
 /**
+ * Translates PacketIn messages
  * @author michal.polkorab
  * @author timotej.kubas
  */
index 3d7f3c3f52fd257969c4972eb78b5b839f49f06f..a87c9a5b75a1d02416f6be42b92a9395169fb3da 100644 (file)
@@ -13,6 +13,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortStatusMessageBuilder;
 
 /**
+ * Translates PortStatus messages
  * @author michal.polkorab
  * @author timotej.kubas
  */
index ccef4a669795df28a92cb80d34d9a8d7881fd4d1..9422b3b7a22d0d77ec73e5d5bb8c37e4f2c82242 100644 (file)
@@ -21,6 +21,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.queue.property.header.QueuePropertyBuilder;\r
 \r
 /**\r
+ * Translates QueueGetConfigReply messages\r
  * @author timotej.kubas\r
  * @author michal.polkorab\r
  */\r
index 2c693f109c2edf05fd2fddf59c69301c45328228..d09aa7a19663ff0a0c5c392dd916856b8b6668d3 100644 (file)
@@ -11,6 +11,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.RoleRequestOutputBuilder;\r
 \r
 /**\r
+ * Translates RoleReply messages\r
  * @author timotej.kubas\r
  * @author michal.polkorab\r
  */\r
index 8b72b74cb522bed523e9a4db1dae929c3f5b242e..b67238e03a56e4e173237d0a3e2f4ec11ccced05 100644 (file)
@@ -59,8 +59,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yangtools.yang.binding.DataObject;\r
 \r
 /**\r
+ * Stores and provides correct encoders for received messages\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  */\r
 public class EncoderTable {\r
     \r
index b6f22f76c734314a933ceca77d8b6dc73158319b..56a1661bb5537f43a89a2fd5f72a965136d86650 100644 (file)
@@ -4,9 +4,10 @@ package org.opendaylight.openflowjava.protocol.impl.serialization;
 import org.opendaylight.yangtools.yang.binding.DataObject;\r
 \r
 /**\r
+ * Class used as a key in {@link EncoderTable}\r
  * @author michal.polkorab\r
+ * @author timotej.kubas\r
  * @param <E> message type (class)\r
- *\r
  */\r
 public class MessageTypeKey<E extends DataObject> {\r
 \r
index 811ce8668cd28118b53637be320bda32341b6862..2c88d0a0c766794ff993a80dcf392f56c0f20020 100644 (file)
@@ -6,8 +6,9 @@ import io.netty.buffer.ByteBuf;
 import org.opendaylight.yangtools.yang.binding.DataObject;\r
 \r
 /**\r
+ * Uniform interface for serializing factories\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  * @param <E> message type\r
  */\r
 public interface OFSerializer <E extends DataObject> {\r
@@ -28,7 +29,6 @@ public interface OFSerializer <E extends DataObject> {
     public abstract int computeLength(E message);\r
     \r
     /**\r
-     * \r
      * @return message code type\r
      */\r
     public byte getMessageType();\r
index f32b714244d2a444a7b8a49597f9a6a823b48c30..9253410dca42e0d1de250057423433aface4e0c2 100644 (file)
@@ -8,8 +8,9 @@ import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.BarrierInput;\r
 \r
 /**\r
+ * Translates BarrierRequest messages\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  */\r
 public class BarrierInputMessageFactory implements OFSerializer<BarrierInput> {\r
 \r
index 96badb54e0cf8cbf30406a37150470fcbdee7bd1..59e8b0436b256fc814a6898702710d297117bff5 100644 (file)
@@ -8,8 +8,9 @@ import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoInput;\r
 \r
 /**\r
+ * Translates EchoRequest messages\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  */\r
 public class EchoInputMessageFactory implements OFSerializer<EchoInput> {\r
 \r
index 233d49bd5e1fadb98b48c1c30211c81fd5410549..18a0243fa0b9d0e13a9d7e16ce09b284c1ed4db5 100644 (file)
@@ -8,8 +8,9 @@ import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoReplyInput;\r
 \r
 /**\r
+ * Translates EchoReply messages\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  */\r
 public class EchoReplyInputMessageFactory implements OFSerializer<EchoReplyInput>{\r
 \r
index dad1b46150712173c4c64e1ce8019e4a4edf05f3..8ec5298c0effc3515be071a689dff205f3628ae6 100644 (file)
@@ -2,8 +2,8 @@
 package org.opendaylight.openflowjava.protocol.impl.serialization.factories;\r
 \r
 /**\r
+ * Stores common constants\r
  * @author michal.polkorab\r
- *\r
  */\r
 public abstract class EncodeConstants {\r
 \r
index deba61c007b9d1bf57ba83893fa405a97d6866e1..de2133f21137242176473f84a61d65d9d7b2d9fb 100644 (file)
@@ -8,8 +8,9 @@ import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterInput;\r
 \r
 /**\r
+ * Translates Experimenter messages\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  */\r
 public class ExperimenterInputMessageFactory implements OFSerializer<ExperimenterInput>{\r
 \r
index 7a8a86f465ec4b05db369f219b8c6b104ab1dfba..4793c286bf0556ba9dc4d1c04aadac5c02c1f8b8 100644 (file)
@@ -14,6 +14,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev13
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowModInput;\r
 \r
 /**\r
+ * Translates FlowMod messages\r
  * @author timotej.kubas\r
  * @author michal.polkorab\r
  */\r
index 33fac000028d87c9b19a2a17fcf64d97a90f33e0..e1f3a8cc37e603ab5b7d5ef8a9bd7d5f84ed0844 100644 (file)
@@ -8,6 +8,7 @@ import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetAsyncInput;\r
 \r
 /**\r
+ * Translates GetAsyncRequest messages\r
  * @author timotej.kubas\r
  * @author michal.polkorab\r
  */\r
index 4eecde811ff65969dbf5aa4187c9a3da112adeba..ee3877c6b46f1ee5ba51f3283b9561edad95db88 100644 (file)
@@ -8,8 +8,9 @@ import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetConfigInput;\r
 \r
 /**\r
+ * Translates GetConfigRequest messages\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  */\r
 public class GetConfigInputMessageFactory implements OFSerializer<GetConfigInput> {\r
 \r
index ced7255ad90c4936ad8d3997df382bde1bd05d06..e573b280c36ebfe24a46799aab72a20d75effb8b 100644 (file)
@@ -8,8 +8,9 @@ import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesInput;\r
 \r
 /**\r
+ * Translates FeaturesRequest messages\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  */\r
 public class GetFeaturesInputMessageFactory implements OFSerializer<GetFeaturesInput>{\r
 \r
index 771254f80bf122bb38d65003ed6a2a497fd0938a..d5c8d5b19945848af02a3fbb2577f05477f54451 100644 (file)
@@ -8,6 +8,7 @@ import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetQueueConfigInput;
 
 /**
+ * Translates QueueGetConfigRequest messages
  * @author timotej.kubas
  * @author michal.polkorab
  */
index 6fa791d3f53574761161eb509e6e04c9066c1555..594e4f3aa4a184f866f463e1d7161b621bea224e 100644 (file)
@@ -12,6 +12,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.buckets.BucketsList;\r
 \r
 /**\r
+ * Translates GroupMod messages\r
  * @author timotej.kubas\r
  * @author michal.polkorab\r
  */\r
index 0c5519e091357a83172c0d5d3adffd2a0b802212..303eb6c8055e1db3fa8547bcfdef1d9e7d707773 100644 (file)
@@ -14,8 +14,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;\r
 \r
 /**\r
+ * Translates Hello messages\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  */\r
 public class HelloInputMessageFactory implements OFSerializer<HelloInput>{\r
 \r
index 7421029c5d18afe85b9e1a02c58bc16ec5b8bfbc..30c91ab28699cdbbdfd0948e8f19dbfb09a35648 100644 (file)
@@ -19,6 +19,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.mod.Bands;\r
 \r
 /**\r
+ * Translates MeterMod messages\r
  * @author timotej.kubas\r
  * @author michal.polkorab\r
  */\r
index fdd75422d520ac37ee1474c240ed27258c50744d..f223c56203beecb0a000c97ee77e150d15831c6c 100644 (file)
@@ -41,6 +41,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.table.features.properties.TableFeatureProperties;\r
 \r
 /**\r
+ * Translates MultipartRequest messages\r
  * @author timotej.kubas\r
  * @author michal.polkorab\r
  */\r
index 32499206465e07b00d10fbf87e01d26cd15568b5..aaac85619cd578961ee8114378729739a4ac9dbb 100644 (file)
@@ -8,8 +8,8 @@ import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.BarrierInput;\r
 \r
 /**\r
+ * Translates BarrierRequest messages\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10BarrierInputMessageFactory implements OFSerializer<BarrierInput> {\r
 \r
index 804fffbd02f87578860a35703fc37c46d66af602..5593156440d2792dcd41bb93f43377851919e035 100644 (file)
@@ -8,8 +8,8 @@ import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoInput;\r
 \r
 /**\r
+ * Translates EchoRequest messages\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10EchoInputMessageFactory implements OFSerializer<EchoInput> {\r
 \r
index 9b7d276b067ddf361a182a8b8ebcb00d49633a3c..b97fbc6e0430824f8eec4287da2475407d7ed966 100644 (file)
@@ -8,8 +8,8 @@ import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoReplyInput;\r
 \r
 /**\r
+ * Translates EchoReply messages\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10EchoReplyInputMessageFactory implements OFSerializer<EchoReplyInput> {\r
 \r
index c0bdd8e8a7e396da96d0ce21d74d38ff6c72461b..4c727ff35be5324c513dcb7c973cfde50ad7c9ad 100644 (file)
@@ -8,8 +8,8 @@ import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesInput;\r
 \r
 /**\r
+ * Translates FeaturesRequest messages\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10FeaturesInputMessageFactory implements OFSerializer<GetFeaturesInput>{\r
 \r
index 998f220c96dd43645a6877b0254af517f9f45ec1..7821cd4979ad354993b1c37f63fd822c8a1da9a4 100644 (file)
@@ -14,8 +14,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev13
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowModInput;\r
 \r
 /**\r
+ * Translates FlowMod messages\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10FlowModInputMessageFactory implements OFSerializer<FlowModInput> {\r
 \r
index 7b2db454204ae63a8bdc8e91ee1d3a2cf9ca5500..7a3591c917809ce9ef02452bc31c823a22809f51 100644 (file)
@@ -8,8 +8,8 @@ import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetConfigInput;\r
 \r
 /**\r
+ * Translates GetConfigRequest messages\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10GetConfigInputMessageFactory implements OFSerializer<GetConfigInput> {\r
 \r
index 24698acddbab19d415460c4b4aea1b0f3c133487..8ca946966a8beedde113139bbfaaf51e6068abc5 100644 (file)
@@ -8,8 +8,8 @@ import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloInput;\r
 \r
 /**\r
+ * Translates Hello messages\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10HelloInputMessageFactory implements OFSerializer<HelloInput> {\r
 \r
index 8948fff5dbad096e626b9698399ff033f67119a0..d397f8a97621e08463f6631a7d9fd0d3523ad543 100644 (file)
@@ -9,8 +9,8 @@ import org.opendaylight.openflowjava.protocol.impl.util.OF10ActionsSerializer;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketOutInput;\r
 \r
 /**\r
+ * Translates PacketOut messages\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10PacketOutInputMessageFactory implements OFSerializer<PacketOutInput> {\r
 \r
index 3935712a514510aeb2a1b610d6b15a0c8cf7b4ee..5f7fbd85a842af74e3c31ef996a0ff68ed6f9a22 100644 (file)
@@ -13,8 +13,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev13
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortModInput;\r
 \r
 /**\r
+ * Translates PortMod messages\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10PortModInputMessageFactory implements OFSerializer<PortModInput> {\r
 \r
index 252132c6d7781b2ed68726add68ce57364a6ff87..5b83e7d810593b3c4fa184caa3fca1e1fafee790 100644 (file)
@@ -8,8 +8,8 @@ import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetQueueConfigInput;\r
 \r
 /**\r
+ * Translates QueueGetConfigRequest messages\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10QueueGetConfigInputMessageFactory implements OFSerializer<GetQueueConfigInput> {\r
     \r
index 611a4d369f431ab651c9f9ae4816029055e34f6c..926a3b82a557ebe77ad6618eedbe2a358577299d 100644 (file)
@@ -8,8 +8,8 @@ import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.SetConfigInput;\r
 \r
 /**\r
+ * Translates SetConfig messages\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10SetConfigMessageFactory implements OFSerializer<SetConfigInput> {\r
 \r
index 070267762659c111159659a3cba414609a6ec2db..fd7b1e2aad90e312b358e4369d6c3f4930fb05f4 100644 (file)
@@ -20,8 +20,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestQueue;\r
 \r
 /**\r
+ * Translates StatsRequest messages\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10StatsRequestMessageFactory implements OFSerializer<MultipartRequestMessage> {\r
 \r
index 8306db2f67366b1a12df49f3fb832581902e38f7..82a53c6dd28c149f5d970d67010c3667d52dbef8 100644 (file)
@@ -8,8 +8,8 @@ import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterInput;\r
 \r
 /**\r
+ * Translates Vendor messages\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10VendorInputMessageFactory implements OFSerializer<ExperimenterInput> {\r
 \r
index 8a7b4ca9402a6b074bcffea252e8869b7d1de052..02386440c233d58b9b1954575c956f01a4de16d3 100644 (file)
@@ -9,8 +9,9 @@ import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketOutInput;\r
 \r
 /**\r
+ * Translates PacketOut messages\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  */\r
 public class PacketOutInputMessageFactory implements OFSerializer<PacketOutInput>{\r
 \r
index f73781d68df53666cc6571f6b53b6a25f8e7b1ad..3264fd0df2c8c936ef1de45e33508a9293e25395 100644 (file)
@@ -13,6 +13,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev13
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortModInput;\r
 \r
 /**\r
+ * Translates PortMod messages\r
  * @author timotej.kubas\r
  * @author michal.polkorab\r
  */\r
index 969df050d8180ee272349ac5f073f21f53d43af9..b60e14768ad3dbc199a226880676e8f5c821d1c3 100644 (file)
@@ -8,8 +8,9 @@ import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.RoleRequestInput;\r
 \r
 /**\r
+ * Translates RoleRequest messages\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  */\r
 public class RoleRequestInputMessageFactory implements OFSerializer<RoleRequestInput> {\r
 \r
index c578486268b68e8194ea3d3bf3b9a94942cb2234..7f5e901d1ae6b411fc3e2e34f630bdc013a47826 100644 (file)
@@ -16,6 +16,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev13
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.SetAsyncInput;\r
 \r
 /**\r
+ * Translates SetAsync messages\r
  * @author timotej.kubas\r
  * @author michal.polkorab\r
  */\r
index 52e956d7e93078a628c283695ab8dcf190bddd02..c9b2471d1df237106b53604afec49b38b718c7a5 100644 (file)
@@ -8,8 +8,9 @@ import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.SetConfigInput;\r
 \r
 /**\r
+ * Translates SetConfig messages\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  */\r
 public class SetConfigMessageFactory implements OFSerializer<SetConfigInput> {\r
 \r
index 668da91ba8af150b734e44ab6f65bb73b9ff339c..228aa900ba667d3539113880d87832e309323e21 100644 (file)
@@ -12,6 +12,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev13
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.TableModInput;\r
 \r
 /**\r
+ * Translates TableMod messages\r
  * @author timotej.kubas\r
  * @author michal.polkorab\r
  */\r
index 5a55c1b171798c2d25bbe30ed2acc3d829f3cf9c..506dd66517e195b374eb095553daa7d3dfeadf18 100644 (file)
@@ -48,8 +48,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev13
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;\r
 \r
 /**\r
- * Class for easy deserialization of actions\r
- * \r
+ * Deserializes ofp_actions (OpenFlow v1.3)\r
  * @author timotej.kubas\r
  * @author michal.polkorab\r
  */\r
@@ -58,6 +57,7 @@ public abstract class ActionsDeserializer {
     private static final byte ACTION_HEADER_LENGTH = 4;\r
     \r
     /**\r
+     * Creates list of actions (OpenFlow v1.3)\r
      * @param input input ByteBuf\r
      * @param actionsLength length of buckets\r
      * @return ActionsList\r
@@ -70,86 +70,85 @@ public abstract class ActionsDeserializer {
             int currentActionLength = 0;\r
             switch(input.readUnsignedShort()) {\r
             case 0: currentActionLength = input.readUnsignedShort(); //outputActionLength\r
-            actionsList.add(ActionsDeserializer.createOutputAction(input, actionsListBuilder));\r
+            actionsList.add(createOutputAction(input, actionsListBuilder));\r
             break;\r
             case 11: \r
                 currentActionLength = input.readUnsignedShort();//empty header length\r
-                actionsList.add(ActionsDeserializer.createCopyTtlOutAction(input, actionsListBuilder));\r
+                actionsList.add(createCopyTtlOutAction(input, actionsListBuilder));\r
                 break;\r
 \r
             case 12: \r
                 currentActionLength = input.readUnsignedShort();//empty header length\r
-                actionsList.add(ActionsDeserializer.createCopyTtlInAction(input, actionsListBuilder));\r
+                actionsList.add(createCopyTtlInAction(input, actionsListBuilder));\r
                 break;\r
 \r
             case 15: \r
                 currentActionLength = input.readUnsignedShort();//empty header length\r
-                actionsList.add(ActionsDeserializer.createSetMplsTtlAction(input, actionsListBuilder));\r
+                actionsList.add(createSetMplsTtlAction(input, actionsListBuilder));\r
                 break;\r
 \r
             case 16:                              \r
                 currentActionLength = input.readUnsignedShort();//empty header length\r
-                actionsList.add(ActionsDeserializer.createDecMplsTtlOutAction(input, actionsListBuilder));\r
+                actionsList.add(createDecMplsTtlOutAction(input, actionsListBuilder));\r
                 break;\r
 \r
             case 17: \r
                 currentActionLength = input.readUnsignedShort();\r
-                actionsList.add(ActionsDeserializer.createPushVlanAction(input, actionsListBuilder));\r
+                actionsList.add(createPushVlanAction(input, actionsListBuilder));\r
                 break;\r
 \r
             case 18:                              \r
                 currentActionLength = input.readUnsignedShort();//empty header length\r
-                actionsList.add(ActionsDeserializer.createPopVlanAction(input, actionsListBuilder));\r
+                actionsList.add(createPopVlanAction(input, actionsListBuilder));\r
                 break;\r
 \r
             case 19: \r
                 currentActionLength = input.readUnsignedShort();//8\r
-                actionsList.add(ActionsDeserializer.createPushMplsAction(input, actionsListBuilder));\r
+                actionsList.add(createPushMplsAction(input, actionsListBuilder));\r
                 break;\r
 \r
             case 20: \r
                 currentActionLength = input.readUnsignedShort();//8\r
-                actionsList.add(ActionsDeserializer.createPopMplsAction(input, actionsListBuilder));\r
+                actionsList.add(createPopMplsAction(input, actionsListBuilder));\r
                 break;\r
 \r
             case 21: \r
                 currentActionLength = input.readUnsignedShort();\r
-                actionsList.add(ActionsDeserializer.createSetQueueAction(input, actionsListBuilder));\r
+                actionsList.add(createSetQueueAction(input, actionsListBuilder));\r
                 break;\r
 \r
             case 22: \r
                 currentActionLength = input.readUnsignedShort();//8\r
-                actionsList.add(ActionsDeserializer.createGroupAction(input, actionsListBuilder));\r
+                actionsList.add(createGroupAction(input, actionsListBuilder));\r
                 break;\r
 \r
             case 23: \r
                 currentActionLength = input.readUnsignedShort();//8\r
-                actionsList.add(ActionsDeserializer.createSetNwTtlAction(input, actionsListBuilder));\r
+                actionsList.add(createSetNwTtlAction(input, actionsListBuilder));\r
                 break;\r
 \r
             case 24:                              \r
                 currentActionLength = input.readUnsignedShort();//empty header length\r
-                actionsList.add(ActionsDeserializer.createDecNwTtlAction(input, actionsListBuilder));\r
+                actionsList.add(createDecNwTtlAction(input, actionsListBuilder));\r
                 break;\r
 \r
             case 25:\r
                 currentActionLength = input.readUnsignedShort();//8\r
-                actionsList.add(ActionsDeserializer.createSetFieldAction(input, actionsListBuilder,\r
-                        currentActionLength));\r
+                actionsList.add(createSetFieldAction(input, actionsListBuilder, currentActionLength));\r
                 break; \r
             case 26: \r
                 currentActionLength = input.readUnsignedShort();//8\r
-                actionsList.add(ActionsDeserializer.createPushPbbAction(input, actionsListBuilder));\r
+                actionsList.add(createPushPbbAction(input, actionsListBuilder));\r
                 break;\r
 \r
             case 27:                              \r
                 currentActionLength = input.readUnsignedShort();//empty header length\r
-                actionsList.add(ActionsDeserializer.createPopPbbAction(input, actionsListBuilder));\r
+                actionsList.add(createPopPbbAction(input, actionsListBuilder));\r
                 break;\r
 \r
             case 0xFFFF: \r
                 currentActionLength = input.readUnsignedShort();\r
-                actionsList.add(ActionsDeserializer.createExperimenterAction(input, actionsListBuilder));\r
+                actionsList.add(createExperimenterAction(input, actionsListBuilder));\r
                 break;\r
             default: \r
                 break;\r
@@ -159,13 +158,6 @@ public abstract class ActionsDeserializer {
         return actionsList;\r
     }\r
     \r
-    \r
-    /**\r
-     * @param action input action that contains empty header\r
-     * @param in input ByteBuf \r
-     * @param actionsListBuilder \r
-     * @return Action\r
-     */\r
     private static ActionsList createEmptyHeader(Class<? extends org.opendaylight.yang.gen.v1.\r
             urn.opendaylight.openflow.common.types.rev130731.Action> action,\r
             ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
@@ -177,66 +169,31 @@ public abstract class ActionsDeserializer {
         return actionsListBuilder.build();\r
     }\r
     \r
-    /**\r
-     * @param in input ByteBuf\r
-     * @param actionsListBuilder \r
-     * @return Action\r
-     */\r
-    public static ActionsList createCopyTtlInAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+    private static ActionsList createCopyTtlInAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
         return createEmptyHeader(CopyTtlIn.class, in, actionsListBuilder);\r
     }\r
-    \r
-    /**\r
-     * @param in input ByteBuf\r
-     * @param actionsListBuilder \r
-     * @return Action\r
-     */\r
-    public static ActionsList createCopyTtlOutAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+\r
+    private static ActionsList createCopyTtlOutAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
         return createEmptyHeader(CopyTtlOut.class, in, actionsListBuilder);\r
     }\r
     \r
-    /**\r
-     * @param in input ByteBuf\r
-     * @param actionsListBuilder \r
-     * @return Action\r
-     */\r
-    public static ActionsList createDecMplsTtlOutAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+    private static ActionsList createDecMplsTtlOutAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
         return createEmptyHeader(DecMplsTtl.class, in, actionsListBuilder);\r
     }\r
     \r
-    /**\r
-     * @param in input ByteBuf\r
-     * @param actionsListBuilder \r
-     * @return Action\r
-     */\r
-    public static ActionsList createPopVlanAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+    private static ActionsList createPopVlanAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
         return createEmptyHeader(PopVlan.class, in, actionsListBuilder);\r
     }\r
     \r
-    /**\r
-     * @param in input ByteBuf\r
-     * @param actionsListBuilder \r
-     * @return Action\r
-     */\r
-    public static ActionsList createDecNwTtlAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+    private static ActionsList createDecNwTtlAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
         return createEmptyHeader(DecNwTtl.class, in, actionsListBuilder);\r
     }\r
     \r
-    /**\r
-     * @param in input ByteBuf\r
-     * @param actionsListBuilder \r
-     * @return Action\r
-     */\r
-    public static ActionsList createPopPbbAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+    private static ActionsList createPopPbbAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
         return createEmptyHeader(PopPbb.class, in, actionsListBuilder);\r
     }\r
     \r
-    /**\r
-     * @param in input ByteBuf\r
-     * @param actionsListBuilder \r
-     * @return ActionList\r
-     */\r
-    public static ActionsList createOutputAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+    private static ActionsList createOutputAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
         final byte PADDING_IN_OUTPUT_ACTIONS_HEADER = 6;\r
         ActionBuilder actionBuilder = new ActionBuilder();\r
         actionBuilder.setType(Output.class);\r
@@ -248,16 +205,10 @@ public abstract class ActionsDeserializer {
         actionBuilder.addAugmentation(MaxLengthAction.class, maxLen.build());\r
         actionsListBuilder.setAction(actionBuilder.build());\r
         in.skipBytes(PADDING_IN_OUTPUT_ACTIONS_HEADER);\r
-        \r
         return actionsListBuilder.build();\r
     }\r
     \r
-    /**\r
-     * @param in input ByteBuf\r
-     * @param actionsListBuilder \r
-     * @return ActionList\r
-     */\r
-    public static ActionsList createSetMplsTtlAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+    private static ActionsList createSetMplsTtlAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
         final byte PADDING_IN_SET_MPLS_TTL_ACTIONS_HEADER = 3;\r
         ActionBuilder actionBuilder = new ActionBuilder();\r
         actionBuilder.setType(SetMplsTtl.class);\r
@@ -266,16 +217,9 @@ public abstract class ActionsDeserializer {
         actionBuilder.addAugmentation(MplsTtlAction.class, mplsTtl.build());\r
         actionsListBuilder.setAction(actionBuilder.build());\r
         in.skipBytes(PADDING_IN_SET_MPLS_TTL_ACTIONS_HEADER);\r
-        \r
         return actionsListBuilder.build();\r
     }\r
     \r
-    /**\r
-     * @param action input action that contains push\r
-     * @param in input ByteBuf\r
-     * @param actionsListBuilder \r
-     * @return ActionList\r
-     */\r
     private static ActionsList createPushAction(Class<? extends org.opendaylight.yang.gen.\r
             v1.urn.opendaylight.openflow.common.types.rev130731.Action> action,\r
             ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
@@ -287,100 +231,56 @@ public abstract class ActionsDeserializer {
         actionBuilder.addAugmentation(EthertypeAction.class, etherType.build());\r
         actionsListBuilder.setAction(actionBuilder.build());\r
         in.skipBytes(PADDING_IN_PUSH_VLAN_ACTIONS_HEADER);\r
-        \r
         return actionsListBuilder.build();\r
     }\r
     \r
-    /**\r
-     * @param in input ByteBuf\r
-     * @param actionsListBuilder \r
-     * @return Action\r
-     */\r
-    public static ActionsList createPushVlanAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+    private static ActionsList createPushVlanAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
         return createPushAction(PushVlan.class, in, actionsListBuilder);\r
     }\r
     \r
-    /**\r
-     * @param in input ByteBuf\r
-     * @param actionsListBuilder \r
-     * @return Action\r
-     */\r
-    public static ActionsList createPushMplsAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+    private static ActionsList createPushMplsAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
         return createPushAction(PushMpls.class, in, actionsListBuilder);\r
     }\r
     \r
-    /**\r
-     * @param in input ByteBuf\r
-     * @param actionsListBuilder \r
-     * @return Action\r
-     */\r
-    public static ActionsList createPopMplsAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+    private static ActionsList createPopMplsAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
         return createPushAction(PopMpls.class, in, actionsListBuilder);\r
     }\r
     \r
-    /**\r
-     * @param in input ByteBuf\r
-     * @param actionsListBuilder \r
-     * @return Action\r
-     */\r
-    public static ActionsList createPushPbbAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+    private static ActionsList createPushPbbAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
         return createPushAction(PushPbb.class, in, actionsListBuilder);\r
     }\r
     \r
-    /**\r
-     * @param in input ByteBuf\r
-     * @param actionsListBuilder \r
-     * @return ActionList\r
-     */\r
-    public static ActionsList createSetQueueAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+    private static ActionsList createSetQueueAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
         ActionBuilder actionBuilder = new ActionBuilder();\r
         actionBuilder.setType(SetQueue.class);\r
         QueueIdActionBuilder queueId = new QueueIdActionBuilder();\r
         queueId.setQueueId(in.readUnsignedInt());\r
         actionBuilder.addAugmentation(QueueIdAction.class, queueId.build());\r
         actionsListBuilder.setAction(actionBuilder.build());\r
-        \r
         return actionsListBuilder.build();\r
     }\r
     \r
-    /**\r
-     * @param in input ByteBuf\r
-     * @param actionsListBuilder \r
-     * @return ActionList\r
-     */\r
-    public static ActionsList createGroupAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+    private static ActionsList createGroupAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
         ActionBuilder actionBuilder = new ActionBuilder();\r
         actionBuilder.setType(Group.class);\r
         GroupIdActionBuilder group = new GroupIdActionBuilder();\r
         group.setGroupId(in.readUnsignedInt());\r
         actionBuilder.addAugmentation(GroupIdAction.class, group.build());\r
         actionsListBuilder.setAction(actionBuilder.build());\r
-        \r
         return actionsListBuilder.build();\r
     }\r
     \r
-    /**\r
-     * @param in input ByteBuf\r
-     * @param actionsListBuilder \r
-     * @return ActionList\r
-     */\r
-    public static ActionsList createExperimenterAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+    private static ActionsList createExperimenterAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
         ActionBuilder actionBuilder = new ActionBuilder();\r
         actionBuilder.setType(Experimenter.class);\r
         ExperimenterActionBuilder experimenter = new ExperimenterActionBuilder();\r
         experimenter.setExperimenter(in.readUnsignedInt());\r
         actionBuilder.addAugmentation(ExperimenterAction.class, experimenter.build());\r
         actionsListBuilder.setAction(actionBuilder.build());\r
-        \r
         return actionsListBuilder.build();\r
     }\r
     \r
-    /**\r
-     * @param in input ByteBuf\r
-     * @param actionsListBuilder \r
-     * @return ActionList\r
-     */\r
-    public static ActionsList createSetNwTtlAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+    private static ActionsList createSetNwTtlAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
         final byte PADDING_IN_NW_TTL_ACTIONS_HEADER = 3;\r
         ActionBuilder actionBuilder = new ActionBuilder();\r
         actionBuilder.setType(SetNwTtl.class);\r
@@ -389,24 +289,16 @@ public abstract class ActionsDeserializer {
         actionBuilder.addAugmentation(NwTtlAction.class, nwTtl.build());\r
         actionsListBuilder.setAction(actionBuilder.build());\r
         in.skipBytes(PADDING_IN_NW_TTL_ACTIONS_HEADER);\r
-        \r
         return actionsListBuilder.build();\r
     }\r
     \r
-    /**\r
-     * @param in input ByteBuf\r
-     * @param actionsListBuilder \r
-     * @param actionLength length of action\r
-     * @return ActionList\r
-     */\r
-    public static ActionsList createSetFieldAction(ByteBuf in, ActionsListBuilder actionsListBuilder, int actionLength) {\r
+    private static ActionsList createSetFieldAction(ByteBuf in, ActionsListBuilder actionsListBuilder, int actionLength) {\r
         ActionBuilder actionBuilder = new ActionBuilder();\r
         actionBuilder.setType(SetField.class);\r
         OxmFieldsActionBuilder matchEntries = new OxmFieldsActionBuilder();\r
         matchEntries.setMatchEntries(MatchDeserializer.createMatchEntry(in, actionLength  - ACTION_HEADER_LENGTH));\r
         actionBuilder.addAugmentation(OxmFieldsAction.class, matchEntries.build());\r
         actionsListBuilder.setAction(actionBuilder.build());\r
-        \r
         return actionsListBuilder.build();\r
     }\r
 }\r
index 5746ea0ee3980ad8751775c52ac18ddf2ce2d3cd..333a7cab0902cb22e429c238902ad77eac0b6556 100644 (file)
@@ -37,8 +37,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev1
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.MatchEntries;\r
 \r
 /**\r
- * Class for easy serialization of actions\r
- * \r
+ * Serializes ofp_actions (OpenFlow v1.3)\r
  * @author michal.polkorab\r
  * @author timotej.kubas\r
  */\r
@@ -205,6 +204,8 @@ public abstract class ActionsSerializer {
             length += EncodeConstants.PADDING - paddingRemainder;\r
         }\r
         outBuffer.writeShort(length);\r
+        MatchSerializer.encodeMatchEntries(oxmField.getMatchEntries(), outBuffer);\r
+        ByteBufUtils.padBuffer(EncodeConstants.PADDING - paddingRemainder, outBuffer);\r
     }\r
     \r
     private static void encodePushPbbAction(Action action, ByteBuf outBuffer) {\r
index 196e44d39edd23ed083e32d3da6465cc6fc09ad3..8e1ba7f817046d1af0f963fb9f02c1644f583094 100644 (file)
@@ -13,8 +13,8 @@ import org.opendaylight.openflowjava.protocol.impl.serialization.OFSerializer;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;\r
 \r
 /** Class for common operations on ByteBuf\r
- *\r
  * @author michal.polkorab\r
+ * @author timotej.kubas\r
  */\r
 public abstract class ByteBufUtils {\r
 \r
index 61f8a9705bb5b630f24f6e5dcad8d292516c7c45..2308346bddecb3240c781ccbae974bdfc58f58d5 100644 (file)
@@ -27,8 +27,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction
 import io.netty.buffer.ByteBuf;\r
 \r
 /**\r
+ * Deserializes ofp_instruction (OpenFlow v1.3) structures\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  */\r
 public class InstructionsDeserializer {\r
     \r
index 54478ebf6663a9a4f41dee27f06cea8cc174fa24..aa998bcabe02aaad6b84adcfab69907e7eb675cc 100644 (file)
@@ -22,8 +22,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.Instruction;\r
 \r
 /**\r
+ * Serializes ofp_instruction (OpenFlow v 1.3) structure\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  */\r
 public abstract class InstructionsSerializer {\r
 \r
@@ -102,7 +103,7 @@ public abstract class InstructionsSerializer {
     /**\r
      * Computes length of instructions\r
      * @param instructions List of instructions\r
-     * @return length of instructions(in bytes)\r
+     * @return length of instructions (in bytes)\r
      */\r
     public static int computeInstructionsLength(List<Instructions> instructions) {\r
         int length = 0;\r
index dba41160c0726bc404737574661e8328f987d59d..b5e6b486d34e732989df3e1b031ed003535baf32 100644 (file)
@@ -119,7 +119,7 @@ import org.slf4j.LoggerFactory;
 import com.google.common.base.Joiner;\r
 \r
 /**\r
- * Class for easy creation of matches\r
+ * Deserializes ofp_match (OpenFlow v1.3) and its oxm_fields structures\r
  * @author timotej.kubas\r
  * @author michal.polkorab\r
  */\r
@@ -135,7 +135,7 @@ public abstract class MatchDeserializer {
     /**\r
      * Creates match\r
      * @param in input ByteBuf\r
-     * @return ofp_match\r
+     * @return ofp_match (OpenFlow v1.3)\r
      */\r
     public static Match createMatch(ByteBuf in) {\r
         if (in.readableBytes() > 0) {\r
@@ -163,9 +163,10 @@ public abstract class MatchDeserializer {
     }\r
     \r
     /**\r
+     * Deserializes single match entry (oxm_field)\r
      * @param in input ByteBuf\r
-     * @param matchLength to infer size of array\r
-     * @return MatchEntriesList\r
+     * @param matchLength length of match entry\r
+     * @return MatchEntriesList list containing one match entry\r
      */\r
     public static List<MatchEntries> createMatchEntry(ByteBuf in, int matchLength) {\r
         return createMatchEntriesInternal(in, matchLength, true);\r
@@ -173,8 +174,8 @@ public abstract class MatchDeserializer {
     \r
     /**\r
      * @param in input ByteBuf\r
-     * @param matchLength to infer size of array\r
-     * @return MatchEntriesList\r
+     * @param matchLength length of match entries\r
+     * @return MatchEntriesList list of match entries\r
      */\r
     public static List<MatchEntries> createMatchEntries(ByteBuf in, int matchLength) {\r
         return createMatchEntriesInternal(in, matchLength, false);\r
@@ -500,7 +501,6 @@ public abstract class MatchDeserializer {
     }\r
 \r
     private static void addMaskAugmentation(MatchEntriesBuilder builder, ByteBuf in, int matchEntryLength) {\r
-//         TODO - check if matchEntryLength is in bytes\r
         MaskMatchEntryBuilder maskBuilder = new MaskMatchEntryBuilder();\r
         byte[] mask = new byte[matchEntryLength];\r
         in.readBytes(mask);\r
index e36e7d4217176516a647f52c15ef3b3ef13f7adf..7af3e11ccddddbb190953e71fea0834e78ae3153 100644 (file)
@@ -88,15 +88,16 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;\r
 \r
 /**\r
+ * Serializes ofp_match (OpenFlow v1.3) and its oxm_fields structures\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  */\r
 public class MatchSerializer {\r
     \r
     private static final Logger LOGGER = LoggerFactory.getLogger(MatchSerializer.class);\r
 \r
     /**\r
-     * Encodes OF match\r
+     * Encodes match (OpenFlow v1.3)\r
      * @param match ofp_match object\r
      * @param out output ByteBuf\r
      */\r
@@ -128,8 +129,8 @@ public class MatchSerializer {
 \r
     /**\r
      * Encodes MatchEntries\r
-     * @param matchEntries\r
-     * @param out\r
+     * @param matchEntries list of match entries (oxm_fields)\r
+     * @param out output ByteBuf\r
      */\r
     public static void encodeMatchEntries(List<MatchEntries> matchEntries, ByteBuf out) {\r
         if (matchEntries == null) {\r
@@ -138,7 +139,7 @@ public class MatchSerializer {
         }\r
         for (MatchEntries entry : matchEntries) {\r
             encodeClass(entry.getOxmClass(), out);\r
-            encodeRest(entry, null);\r
+            encodeRest(entry, out);\r
         }\r
     }\r
 \r
@@ -499,7 +500,7 @@ public class MatchSerializer {
     }\r
 \r
     /**\r
-     * Computes length of ofp_match structure (in bytes)\r
+     * Computes length of match (in bytes)\r
      * @param match\r
      * @return length of ofp_match (excluding padding)\r
      */\r
@@ -514,7 +515,7 @@ public class MatchSerializer {
 \r
     /**\r
      * Computes length of MatchEntries (in bytes)\r
-     * @param matchEntries\r
+     * @param matchEntries list of match entries (oxm_fields)\r
      * @return length of MatchEntries\r
      */\r
     public static int computeMatchEntriesLength(List<MatchEntries> matchEntries) {\r
index 27bcafd681dd97f5927ef09550dc4b5a2c2a7a41..f406b95694f60d553d514f6a19a8358a4597ddfa 100644 (file)
@@ -45,14 +45,15 @@ import org.opendaylight.yangtools.yang.binding.Augmentation;
 import com.google.common.base.Joiner;\r
 \r
 /**\r
+ * Deserializes ofp_action (OpenFlow v1.0) structures\r
  * @author michal.polkorab\r
- *\r
  */\r
 public class OF10ActionsDeserializer {\r
 \r
     /**\r
+     * Creates list of actions (OpenFlow v1.0) from ofp_action structures\r
      * @param input input ByteBuf\r
-     * @return ActionsList\r
+     * @return ActionsList list of actions\r
      */\r
     public static List<ActionsList> createActionsList(ByteBuf input) {\r
         List<ActionsList> actions = new ArrayList<>();\r
index cda8fd35c50cf18fa682454714be8e827001f77f..d4a98efb27df0774b7a29978694516e4e6e83fd1 100644 (file)
@@ -31,15 +31,15 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev1
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action;\r
 \r
 /**\r
+ * Serializes ofp_action (OpenFlow v1.0) structures\r
  * @author michal.polkorab\r
- *\r
  */\r
 public abstract class OF10ActionsSerializer {\r
     \r
     /**\r
-     * Encodes actions (OpenFlow v1.0)\r
-     * @param out\r
-     * @param actionsList\r
+     * Encodes ofp_action (OpenFlow v1.0) structures\r
+     * @param out output ByteBuf that actions will be written into\r
+     * @param actionsList actions to be encoded\r
      */\r
     public static void encodeActionsV10(ByteBuf out, List<ActionsList> actionsList) {\r
         if (actionsList == null) {\r
index 18006ba9b25ebdab931468120612a9994dda8003..216cbd3efca78776d4680035056ceaafbf6e8c5d 100644 (file)
@@ -14,8 +14,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.matc
 import com.google.common.base.Joiner;\r
 \r
 /**\r
+ * Deserializes ofp_match (OpenFlow v1.0) structure\r
  * @author michal.polkorab\r
- *\r
  */\r
 public abstract class OF10MatchDeserializer {\r
     \r
@@ -25,8 +25,8 @@ public abstract class OF10MatchDeserializer {
     private static final byte GROUPS_IN_IPV4_ADDRESS = 4;\r
 \r
     /**\r
-     * Creates match \r
-     * @param rawMessage\r
+     * Creates ofp_match (OpenFlow v1.0) structure\r
+     * @param rawMessage ByteBuf with input data\r
      * @return ofp_match (OpenFlow v1.0)\r
      */\r
     public static MatchV10 createMatchV10(ByteBuf rawMessage) {\r
index 909852d1fc99a8f91d8fd26d72ceb5ee7ea770ab..d7b61ca36353f553e98fe16d75ed6a702eb8739d 100644 (file)
@@ -6,8 +6,8 @@ import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.match.v10.grouping.MatchV10;\r
 \r
 /**\r
+ * Serializes ofp_match (OpenFlow v1.0) structure\r
  * @author michal.polkorab\r
- *\r
  */\r
 public abstract class OF10MatchSerializer {\r
 \r
@@ -16,8 +16,8 @@ public abstract class OF10MatchSerializer {
     \r
     /**\r
      * Encodes ofp_match (OpenFlow v1.0)\r
-     * @param out\r
-     * @param match\r
+     * @param out output ByteBuf that match will be written into\r
+     * @param match match to be encoded\r
      */\r
     public static void encodeMatchV10(ByteBuf out, MatchV10 match) {\r
         out.writeInt(match.getWildcards().intValue());\r
index 28376ed6c21bf753fbd50d9365ddf0724a07b787..7fcd9b889957470550b67d5baa2d45d534cd8fe6 100644 (file)
@@ -5,17 +5,39 @@ import io.netty.buffer.ByteBuf;
 import io.netty.buffer.UnpooledByteBufAllocator;\r
 \r
 import java.math.BigInteger;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
 \r
 import org.junit.Assert;\r
 import org.junit.Test;\r
 import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.HelloMessageFactoryTest;\r
 import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.EcnMatchEntry;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.EcnMatchEntryBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.MetadataInstruction;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.MetadataInstructionBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.PortNumberMatchEntry;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.PortNumberMatchEntryBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.TableIdInstruction;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.TableIdInstructionBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.GotoTable;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.WriteMetadata;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instructions.Instructions;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instructions.InstructionsBuilder;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowModCommand;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowModFlags;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.TableId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.InPhyPort;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.IpEcn;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Nxm0Class;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.OpenflowBasicClass;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.OxmMatchType;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.MatchEntries;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.MatchEntriesBuilder;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowModInput;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowModInputBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.match.grouping.MatchBuilder;\r
 \r
 /**\r
  * @author timotej.kubas\r
@@ -31,9 +53,9 @@ public class FlowModInputMessageFactoryTest {
     public void testFlowModInputMessageFactory() throws Exception {\r
         FlowModInputBuilder builder = new FlowModInputBuilder();\r
         BufferHelper.setupHeader(builder);\r
-        byte[] cookie = new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01};\r
+        byte[] cookie = new byte[]{0x00, 0x01, 0x04, 0x01, 0x06, 0x00, 0x07, 0x01};\r
         builder.setCookie(new BigInteger(cookie));\r
-        byte[] cookieMask = new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};\r
+        byte[] cookieMask = new byte[]{0x01, 0x05, 0x00, 0x00, 0x09, 0x30, 0x00, 0x30};\r
         builder.setCookieMask(new BigInteger(cookieMask));\r
         builder.setTableId(new TableId(65L));\r
         builder.setCommand(FlowModCommand.forValue(2));\r
@@ -44,6 +66,40 @@ public class FlowModInputMessageFactoryTest {
         builder.setOutPort(new PortNumber(4422L));\r
         builder.setOutGroup(98L);\r
         builder.setFlags(new FlowModFlags(true, false, true, false, true));\r
+        MatchBuilder matchBuilder = new MatchBuilder();\r
+        matchBuilder.setType(OxmMatchType.class);\r
+        List<MatchEntries> entries = new ArrayList<>();\r
+        MatchEntriesBuilder entriesBuilder = new MatchEntriesBuilder();\r
+        entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
+        entriesBuilder.setOxmMatchField(InPhyPort.class);\r
+        entriesBuilder.setHasMask(false);\r
+        PortNumberMatchEntryBuilder portNumberBuilder = new PortNumberMatchEntryBuilder();\r
+        portNumberBuilder.setPortNumber(new PortNumber(42L));\r
+        entriesBuilder.addAugmentation(PortNumberMatchEntry.class, portNumberBuilder.build());\r
+        entries.add(entriesBuilder.build());\r
+        entriesBuilder.setOxmClass(Nxm0Class.class);\r
+        entriesBuilder.setOxmMatchField(IpEcn.class);\r
+        entriesBuilder.setHasMask(false);\r
+        EcnMatchEntryBuilder ecnBuilder = new EcnMatchEntryBuilder();\r
+        ecnBuilder.setEcn((short) 4);\r
+        entriesBuilder.addAugmentation(EcnMatchEntry.class, ecnBuilder.build());\r
+        entries.add(entriesBuilder.build());\r
+        matchBuilder.setMatchEntries(entries);\r
+        builder.setMatch(matchBuilder.build());\r
+        List<Instructions> instructions = new ArrayList<>();\r
+        InstructionsBuilder insBuilder = new InstructionsBuilder();\r
+        insBuilder.setType(GotoTable.class);\r
+        TableIdInstructionBuilder idBuilder = new TableIdInstructionBuilder();\r
+        idBuilder.setTableId((short) 43);\r
+        insBuilder.addAugmentation(TableIdInstruction.class, idBuilder.build());\r
+        instructions.add(insBuilder.build());\r
+        insBuilder.setType(WriteMetadata.class);\r
+        MetadataInstructionBuilder metaBuilder = new MetadataInstructionBuilder();\r
+        metaBuilder.setMetadata(cookie);\r
+        metaBuilder.setMetadataMask(cookieMask);\r
+        insBuilder.addAugmentation(MetadataInstruction.class, metaBuilder.build());\r
+        instructions.add(insBuilder.build());\r
+        builder.setInstructions(instructions);\r
         FlowModInput message = builder.build();\r
         \r
         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();\r
@@ -53,21 +109,47 @@ public class FlowModInputMessageFactoryTest {
         BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength(message));\r
         Assert.assertEquals("Wrong cookie", message.getCookie().longValue(), out.readLong());\r
         Assert.assertEquals("Wrong cookieMask", message.getCookieMask().longValue(), out.readLong());\r
-        Assert.assertEquals("Wrong tableId", message.getTableId().getValue().intValue(), out.readByte());\r
-        Assert.assertEquals("Wrong command", message.getCommand().getIntValue(), out.readByte());\r
+        Assert.assertEquals("Wrong tableId", message.getTableId().getValue().intValue(), out.readUnsignedByte());\r
+        Assert.assertEquals("Wrong command", message.getCommand().getIntValue(), out.readUnsignedByte());\r
         Assert.assertEquals("Wrong idleTimeOut", message.getIdleTimeout().intValue(), out.readShort());\r
         Assert.assertEquals("Wrong hardTimeOut", message.getHardTimeout().intValue(), out.readShort());\r
         Assert.assertEquals("Wrong priority", message.getPriority().intValue(), out.readUnsignedShort());\r
         Assert.assertEquals("Wrong bufferId", message.getBufferId().intValue(), out.readUnsignedInt());\r
         Assert.assertEquals("Wrong outPort", message.getOutPort().getValue().intValue(), out.readUnsignedInt());\r
         Assert.assertEquals("Wrong outGroup", message.getOutGroup().intValue(), out.readUnsignedInt());\r
-        Assert.assertEquals("Wrong flags", message.getFlags(), createFlowModFalgsFromBitmap(out.readShort()));\r
+        Assert.assertEquals("Wrong flags", message.getFlags(), createFlowModFlagsFromBitmap(out.readUnsignedShort()));\r
         out.skipBytes(PADDING_IN_FLOW_MOD_MESSAGE);\r
-        // TODO implementation of match structure\r
-        // TODO implementation of instructions\r
+        Assert.assertEquals("Wrong match type", 1, out.readUnsignedShort());\r
+        out.skipBytes(Short.SIZE / Byte.SIZE);\r
+        Assert.assertEquals("Wrong oxm class", 0x8000, out.readUnsignedShort());\r
+        short fieldAndMask = out.readUnsignedByte();\r
+        Assert.assertEquals("Wrong oxm hasMask", 0, fieldAndMask & 1);\r
+        Assert.assertEquals("Wrong oxm field", 1, fieldAndMask >> 1);\r
+        out.skipBytes(Byte.SIZE / Byte.SIZE);\r
+        Assert.assertEquals("Wrong oxm value", 42, out.readUnsignedInt());\r
+        Assert.assertEquals("Wrong oxm class", 0, out.readUnsignedShort());\r
+        fieldAndMask = out.readUnsignedByte();\r
+        Assert.assertEquals("Wrong oxm hasMask", 0, fieldAndMask & 1);\r
+        Assert.assertEquals("Wrong oxm field", 9, fieldAndMask >> 1);\r
+        out.skipBytes(Byte.SIZE / Byte.SIZE);\r
+        Assert.assertEquals("Wrong oxm value", 4, out.readUnsignedByte());\r
+        out.skipBytes(7);\r
+        Assert.assertEquals("Wrong instruction type", 1, out.readUnsignedShort());\r
+        out.skipBytes(Short.SIZE / Byte.SIZE);\r
+        Assert.assertEquals("Wrong instruction value", 43, out.readUnsignedByte());\r
+        out.skipBytes(3);\r
+        Assert.assertEquals("Wrong instruction type", 2, out.readUnsignedShort());\r
+        out.skipBytes(Short.SIZE / Byte.SIZE);\r
+        out.skipBytes(Integer.SIZE / Byte.SIZE);\r
+        byte[] cookieRead = new byte[Long.SIZE / Byte.SIZE];\r
+        out.readBytes(cookieRead);\r
+        byte[] cookieMaskRead = new byte[Long.SIZE / Byte.SIZE];\r
+        out.readBytes(cookieMaskRead);\r
+        Assert.assertArrayEquals("Wrong metadata", cookie, cookieRead);\r
+        Assert.assertArrayEquals("Wrong metadata mask", cookieMask, cookieMaskRead); \r
     }\r
     \r
-    private static FlowModFlags createFlowModFalgsFromBitmap(short input){\r
+    private static FlowModFlags createFlowModFlagsFromBitmap(int input){\r
         final Boolean _oFPFFSENDFLOWREM = (input & (1 << 0)) > 0;\r
         final Boolean _oFPFFCHECKOVERLAP = (input & (1 << 1)) > 0;\r
         final Boolean _oFPFFRESETCOUNTS = (input & (1 << 2)) > 0; \r
index 6e30ae6e8c618693f8f84bc9d9788f28db313b5e..7e78f561c02dd660e43e7c1fcfeb1e894fbd27bf 100644 (file)
@@ -3,11 +3,23 @@ package org.opendaylight.openflowjava.protocol.impl.serialization.factories;
 \r
 import io.netty.buffer.ByteBuf;\r
 import io.netty.buffer.UnpooledByteBufAllocator;\r
-import junit.framework.Assert;\r
 \r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import org.junit.Assert;\r
 import org.junit.Test;\r
 import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.HelloMessageFactoryTest;\r
 import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;\r
+import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.EthertypeAction;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.EthertypeActionBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PopVlan;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PushVlan;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.ActionsList;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.ActionsListBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.ActionBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.EtherType;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketOutInput;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketOutInputBuilder;\r
@@ -18,8 +30,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
  */\r
 public class PacketOutInputMessageFactoryTest {\r
     private static final byte MESSAGE_TYPE = 13;\r
-    private static final int MESSAGE_LENGTH = 24;\r
     private static final byte PADDING_IN_PACKET_OUT_MESSAGE = 6;\r
+    private static final int PADDING_IN_ACTION_HEADER = 4;\r
        \r
     /**\r
      * Testing of {@link PacketOutInputMessageFactory} for correct translation from POJO\r
@@ -31,17 +43,39 @@ public class PacketOutInputMessageFactoryTest {
         BufferHelper.setupHeader(builder);\r
         builder.setBufferId(256L);\r
         builder.setInPort(new PortNumber(256L));\r
+        List<ActionsList> actions = new ArrayList<>();\r
+        ActionsListBuilder actionsListBuilder = new ActionsListBuilder();\r
+        ActionBuilder actionBuilder = new ActionBuilder();\r
+        actionBuilder.setType(PushVlan.class);\r
+        EthertypeActionBuilder ethertypeBuilder = new EthertypeActionBuilder();\r
+        ethertypeBuilder.setEthertype(new EtherType(25));\r
+        actionBuilder.addAugmentation(EthertypeAction.class, ethertypeBuilder.build());\r
+        actionsListBuilder.setAction(actionBuilder.build());\r
+        actions.add(actionsListBuilder.build());\r
+        actionBuilder = new ActionBuilder();\r
+        actionBuilder.setType(PopVlan.class);\r
+        actionsListBuilder.setAction(actionBuilder.build());\r
+        actions.add(actionsListBuilder.build());\r
+        builder.setActionsList(actions);\r
+        builder.setData(ByteBufUtils.hexStringToBytes("00 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14"));\r
         PacketOutInput message = builder.build();\r
         \r
         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();\r
         PacketOutInputMessageFactory factory = PacketOutInputMessageFactory.getInstance();\r
         factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);\r
         \r
-        BufferHelper.checkHeaderV13(out, MESSAGE_TYPE, MESSAGE_LENGTH);\r
+        BufferHelper.checkHeaderV13(out, MESSAGE_TYPE, 56);\r
         Assert.assertEquals("Wrong BufferId", message.getBufferId().longValue(), out.readUnsignedInt());\r
         Assert.assertEquals("Wrong PortNumber", message.getInPort().getValue().longValue(), out.readUnsignedInt());\r
-        // TODO make test for actions after its implementation in factory \r
-        // TODO data\r
+        Assert.assertEquals("Wrong ActionsLength", 16, out.readUnsignedShort());\r
         out.skipBytes(PADDING_IN_PACKET_OUT_MESSAGE);\r
+        Assert.assertEquals("Wrong action type", 17, out.readUnsignedShort());\r
+        Assert.assertEquals("Wrong action length", 8, out.readUnsignedShort());\r
+        Assert.assertEquals("Wrong ethertype", 25, out.readUnsignedShort());\r
+        out.skipBytes(Short.SIZE / Byte.SIZE);\r
+        Assert.assertEquals("Wrong action type", 18, out.readUnsignedShort());\r
+        Assert.assertEquals("Wrong action length", 8, out.readUnsignedShort());\r
+        out.skipBytes(PADDING_IN_ACTION_HEADER);\r
+        Assert.assertArrayEquals("Wrong data", message.getData(), out.readBytes(out.readableBytes()).array());\r
     }\r
 }\r
index e98b48eddc787970e8acf6927b9a256c734565eb..8c5f093f638880cc6c2b20dadead9a9b8a70dca8 100644 (file)
@@ -184,7 +184,14 @@ public class MockPlugin implements OpenflowProtocolListener, SwitchConnectionHan
     @Override\r
     public void onPacketInMessage(PacketInMessage notification) {\r
         LOGGER.debug("PacketIn message received");\r
-        \r
+        LOGGER.debug("BufferId: " + notification.getBufferId());\r
+        LOGGER.debug("TotalLength: " + notification.getTotalLen());\r
+        LOGGER.debug("Reason: " + notification.getReason());\r
+        LOGGER.debug("TableId: " + notification.getTableId());\r
+        LOGGER.debug("Cookie: " + notification.getCookie());\r
+        LOGGER.debug("Class: " + notification.getMatch().getMatchEntries().get(0).getOxmClass());\r
+        LOGGER.debug("Field: " + notification.getMatch().getMatchEntries().get(0).getOxmMatchField());\r
+        LOGGER.debug("Datasize: " + notification.getData().length);\r
     }\r
 \r
     @Override\r
diff --git a/simple-client/src/main/java/org/opendaylight/openflowjava/protocol/impl/clients/SimpleClientFramer.java b/simple-client/src/main/java/org/opendaylight/openflowjava/protocol/impl/clients/SimpleClientFramer.java
new file mode 100644 (file)
index 0000000..95eb08c
--- /dev/null
@@ -0,0 +1,60 @@
+/* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
+
+package org.opendaylight.openflowjava.protocol.impl.clients;
+
+import io.netty.buffer.ByteBuf;
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.handler.codec.ByteToMessageDecoder;
+
+import java.util.List;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Class for decoding incoming messages into message frames.
+ *
+ * @author michal.polkorab
+ */
+public class SimpleClientFramer extends ByteToMessageDecoder {
+
+    /** Length of OpenFlow 1.3 header */
+    public static final byte LENGTH_OF_HEADER = 8;
+    private static final byte LENGTH_INDEX_IN_HEADER = 2;
+    private static final Logger LOGGER = LoggerFactory.getLogger(SimpleClientFramer.class);
+
+    /**
+     * Constructor of class.
+     */
+    public SimpleClientFramer() {
+        LOGGER.debug("Creating OFFrameDecoder");
+    }
+
+    @Override
+    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
+        LOGGER.warn("Unexpected exception from downstream.", cause);
+        ctx.close();
+    }
+
+    @Override
+    protected void decode(ChannelHandlerContext chc, ByteBuf bb, List<Object> list) throws Exception {
+        if (bb.readableBytes() < LENGTH_OF_HEADER) {
+            LOGGER.debug("skipping bb - too few data for header: " + bb.readableBytes());
+            return;
+        }
+
+        int length = bb.getUnsignedShort(LENGTH_INDEX_IN_HEADER);
+        if (bb.readableBytes() < length) {
+            LOGGER.debug("skipping bb - too few data for msg: " +
+                    bb.readableBytes() + " < " + length);
+            return;
+        }
+        LOGGER.info("OF Protocol message received, type:{}", bb.getByte(1));
+
+        ByteBuf messageBuffer = bb.slice(bb.readerIndex(), length);
+        list.add(messageBuffer);
+        messageBuffer.retain();
+        bb.skipBytes(length);
+    }
+
+}
index 04147af06470a639d3cc75ba2d19ee6217e27f7e..e9453b58437ada987f4763909aee3742c7881f81 100644 (file)
@@ -19,7 +19,7 @@ import com.google.common.util.concurrent.SettableFuture;
 public class SimpleClientHandler extends ChannelInboundHandlerAdapter {\r
 \r
     protected static final Logger LOGGER = LoggerFactory.getLogger(SimpleClientHandler.class);\r
-    private static final int OFP_HEADER_LENGTH = 8;\r
+    private static final int LENGTH_INDEX_IN_HEADER = 2;\r
     private SettableFuture<Boolean> isOnlineFuture;\r
     protected ScenarioHandler scenarioHandler;\r
 \r
@@ -34,18 +34,13 @@ public class SimpleClientHandler extends ChannelInboundHandlerAdapter {
 \r
     @Override\r
     public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {\r
-        LOGGER.info("SimpleClientHandler - start of read");\r
         ByteBuf bb = (ByteBuf) msg;\r
         if (LOGGER.isDebugEnabled()) {\r
             LOGGER.debug("<< " + ByteBufUtils.byteBufToHexString(bb));\r
         }\r
-        \r
-        if (bb.readableBytes() < OFP_HEADER_LENGTH) {\r
-            LOGGER.debug("too few bytes received: "+bb.readableBytes()+" - wait for next data portion");\r
-            return;\r
-        }\r
-        int msgSize = bb.getUnsignedShort(2);\r
-        byte[] message = new byte[msgSize];\r
+        int length = bb.getUnsignedShort(LENGTH_INDEX_IN_HEADER);\r
+        LOGGER.info("SimpleClientHandler - start of read");\r
+        byte[] message = new byte[length];\r
         bb.readBytes(message);\r
         scenarioHandler.addOfMsg(message);\r
         LOGGER.info("end of read");\r
index 8ca01e8e39db71bed2f391361e823ab26b3b3261..eed609702309530310c59568dab1175305911b52 100644 (file)
@@ -40,6 +40,7 @@ public class SimpleClientInitializer extends ChannelInitializer<SocketChannel> {
                     .createSSLEngine();
             engine.setUseClientMode(true);
             pipeline.addLast("ssl", new SslHandler(engine));
+            pipeline.addLast("framer", new SimpleClientFramer());
         }
         SimpleClientHandler simpleClientHandler = new SimpleClientHandler(isOnlineFuture, scenarioHandler);
         simpleClientHandler.setScenario(scenarioHandler);