X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflow-protocol-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowjava%2Fprotocol%2Fimpl%2Futil%2FByteBufUtils.java;h=a4fe74588199cf43aabef1a0e2210b6f3affe598;hb=refs%2Fchanges%2F35%2F1435%2F4;hp=3f5e360005dccb1699ecd43f15a70909a29e7817;hpb=c908c74e68ff5a50ca9d43de5a5a640464c5cb3f;p=openflowjava.git diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/ByteBufUtils.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/ByteBufUtils.java index 3f5e3600..a4fe7458 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/ByteBufUtils.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/ByteBufUtils.java @@ -5,6 +5,12 @@ package org.opendaylight.openflowjava.protocol.impl.util; import io.netty.buffer.ByteBuf; import io.netty.buffer.UnpooledByteBufAllocator; +import java.util.Map; +import java.util.Map.Entry; + +import org.opendaylight.openflowjava.protocol.impl.serialization.OFSerializer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader; + /** Class for common operations on ByteBuf * * @author michal.polkorab @@ -69,4 +75,34 @@ public abstract class ByteBufUtils { out.writeByte(0); } } + + /** + * Create standard OF header + * @param factory serialization factory + * @param message POJO + * @param out writing buffer + */ + public static void writeOFHeader(OFSerializer factory, OfHeader message, ByteBuf out) { + out.writeByte(message.getVersion()); + out.writeByte(factory.getMessageType()); + out.writeShort(factory.computeLength()); + out.writeInt(message.getXid().intValue()); + + } + + /** + * Fills the bitmask from boolean map where key is bit position + * @param booleanMap bit to boolean mapping + * @return bit mask + */ + public static int fillBitMaskFromMap(Map booleanMap) { + int bitmask = 0; + + for (Entry iterator : booleanMap.entrySet()) { + if (iterator.getValue() != null && iterator.getValue().booleanValue()) { + bitmask |= 1 << iterator.getKey(); + } + } + return bitmask; + } }