Example usage for com.rabbitmq.client.impl Method toFrame

List of usage examples for com.rabbitmq.client.impl Method toFrame

Introduction

In this page you can find the example usage for com.rabbitmq.client.impl Method toFrame.

Prototype

public Frame toFrame(int channelNumber) throws IOException 

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.//from   ww  w .  j a va 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();
}