Example usage for com.rabbitmq.client.impl AMQConnection getFrameMax

List of usage examples for com.rabbitmq.client.impl AMQConnection getFrameMax

Introduction

In this page you can find the example usage for com.rabbitmq.client.impl AMQConnection getFrameMax.

Prototype

@Override
public int getFrameMax() 

Source Link

Usage

From source file:de.htwk_leipzig.bis.connection.handshake.clientRewrite.AMQCommand.java

License:Mozilla Public License

/**
 * Sends this command down the named channel on the channel's connection,
 * possibly in multiple frames.// w  ww .  j a  v  a  2s.c  om
 * 
 * @param channel
 *            the channel on which to transmit the command
 * @throws IOException
 *             if an error is encountered
 */
public void transmit(AMQChannel channel) throws IOException {
    int channelNumber = channel.getChannelNumber();
    AMQConnection connection = channel.getConnection();

    synchronized (assembler) {
        Method m = this.assembler.getMethod();
        connection.writeFrame(m.toFrame(channelNumber));
        if (m.hasContent()) {
            byte[] body = this.assembler.getContentBody();

            connection.writeFrame(this.assembler.getContentHeader().toFrame(channelNumber, body.length));

            int frameMax = connection.getFrameMax();
            int bodyPayloadMax = (frameMax == 0) ? body.length : frameMax - EMPTY_FRAME_SIZE;

            for (int offset = 0; offset < body.length; offset += bodyPayloadMax) {
                int remaining = body.length - offset;

                int fragmentLength = (remaining < bodyPayloadMax) ? remaining : bodyPayloadMax;
                Frame frame = Frame.fromBodyFragment(channelNumber, body, offset, fragmentLength);
                connection.writeFrame(frame);
            }
        }
    }

    connection.flush();
}