package org.openamq.framing; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.mina.common.ByteBuffer; import org.apache.mina.common.IoSession; import org.apache.mina.filter.codec.demux.MessageEncoder; import org.apache.mina.filter.codec.ProtocolEncoderOutput; import java.util.HashSet; import java.util.Set; public class AMQDataBlockEncoder implements MessageEncoder { Logger _logger = LoggerFactory.getLogger(AMQDataBlockEncoder.class); private Set _messageTypes; public AMQDataBlockEncoder() { _messageTypes = new HashSet(); _messageTypes.add(EncodableAMQDataBlock.class); } public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception { final AMQDataBlock frame = (AMQDataBlock) message; int frameSize = (int)frame.getSize(); final ByteBuffer buffer = ByteBuffer.allocate(frameSize); //buffer.setAutoExpand(true); frame.writePayload(buffer); if (_logger.isDebugEnabled()) { _logger.debug("Encoded frame byte-buffer is '" + EncodingUtils.convertToHexString(buffer) + "'"); } buffer.flip(); out.write(buffer); } public Set getMessageTypes() { return _messageTypes; } }