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 SettableFuture<Boolean> isOnlineFuture;\r
protected ScenarioHandler scenarioHandler;\r
\r
if (LOGGER.isDebugEnabled()) {\r
LOGGER.debug("<< " + ByteBufUtils.byteBufToHexString(bb));\r
}\r
- byte[] message = new byte[8];\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
bb.readBytes(message);\r
scenarioHandler.addOfMsg(message);\r
- skipMsg(bb);\r
LOGGER.info("end of read");\r
}\r
\r
\r
}\r
\r
- private static void skipMsg(ByteBuf bb) {\r
- if (bb.readableBytes() > 0) {\r
- bb.skipBytes(bb.getShort(2));\r
- }\r
- }\r
-\r
/**\r
* @param scenarioHandler handler of scenario events\r
*/\r