/* ************************************************************************ # # DivConq # # http://divconq.com/ # # Copyright: # Copyright 2014 eTimeline, LLC. All rights reserved. # # License: # See the license.txt file in the project's top-level directory for details. # # Authors: # * Andy White # ************************************************************************ */ package divconq.bus.net; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.MessageToByteEncoder; public class StreamEncoder extends MessageToByteEncoder<StreamMessage> { @Override protected void encode(ChannelHandlerContext ctx, StreamMessage msg, ByteBuf out) throws Exception { msg.toSerial(out); if (msg.hasData()) { ByteBuf bb = msg.getData(); try { bb.readerIndex(0); out.writeInt(bb.readableBytes()); out.writeBytes(bb); } finally { bb.release(); // buffer no longer needed } } else out.writeInt(0); } }