java_gen: add optional instrumentation
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/OFInstrumentationOptions.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/OFInstrumentationOptions.java
new file mode 100644
index 0000000..97d7165
--- /dev/null
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/OFInstrumentationOptions.java
@@ -0,0 +1,7 @@
+package org.projectfloodlight.openflow.protocol;
+
+public final class OFInstrumentationOptions {
+    public static final boolean TRACE_READS = false;
+
+    private OFInstrumentationOptions() { }
+}
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/util/ChannelUtils.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/util/ChannelUtils.java
index 13cfdc7..f024fa3 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/util/ChannelUtils.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/util/ChannelUtils.java
@@ -4,8 +4,11 @@
 
 import org.jboss.netty.buffer.ChannelBuffer;
 import org.projectfloodlight.openflow.exceptions.OFParseError;
+import org.projectfloodlight.openflow.protocol.OFInstrumentationOptions;
 import org.projectfloodlight.openflow.protocol.OFMessageReader;
 import org.projectfloodlight.openflow.protocol.Writeable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Charsets;
 import com.google.common.collect.ImmutableList;
@@ -18,6 +21,7 @@
  */
 
 public class ChannelUtils {
+    private static final Logger logger = LoggerFactory.getLogger(ChannelUtils.class);
     public static String readFixedLengthString(ChannelBuffer bb, int length) {
         byte[] dst = new byte[length];
         bb.readBytes(dst, 0, length);
@@ -56,8 +60,15 @@
     public static <T> List<T> readList(ChannelBuffer bb, int length, OFMessageReader<T> reader) throws OFParseError {
         int end = bb.readerIndex() + length;
         Builder<T> builder = ImmutableList.<T>builder();
+        if(OFInstrumentationOptions.TRACE_READS)
+            if(logger.isTraceEnabled())
+                logger.trace("readList(length={}, reader={})", length, reader.getClass());
         while(bb.readerIndex() < end) {
-            builder.add(reader.readFrom(bb));
+            T read = reader.readFrom(bb);
+            if(OFInstrumentationOptions.TRACE_READS)
+                if(logger.isTraceEnabled())
+                    logger.trace("readList: read={}, left={}", read, end - bb.readerIndex());
+            builder.add(read);
         }
         if(bb.readerIndex() != end) {
             throw new IllegalStateException("Overread length: length="+length + " overread by "+ (bb.readerIndex() - end) + " reader: "+reader);