Class AMQCommand

  • All Implemented Interfaces:
    Command

    public class AMQCommand
    extends Object
    implements Command
    AMQP 0-9-1-specific implementation of Command which accumulates method, header and body from a series of frames, unless these are supplied at construction time.

    Concurrency

    This class is thread-safe.
    • Field Detail

      • EMPTY_FRAME_SIZE

        public static final int EMPTY_FRAME_SIZE
        EMPTY_FRAME_SIZE = 8 = 1 + 2 + 4 + 1
        • 1 byte of frame type
        • 2 bytes of channel number
        • 4 bytes of frame payload length
        • 1 byte of payload trailer FRAME_END byte
        See checkEmptyFrameSize(), an assertion checked at startup.
        See Also:
        Constant Field Values
    • Constructor Detail

      • AMQCommand

        public AMQCommand()
        Construct a command ready to fill in by reading frames
      • AMQCommand

        public AMQCommand​(Method method)
        Construct a command with just a method, and without header or body.
        Parameters:
        method - the wrapped method
      • AMQCommand

        public AMQCommand​(Method method,
                          AMQContentHeader contentHeader,
                          byte[] body)
        Construct a command with a specified method, header and body.
        Parameters:
        method - the wrapped method
        contentHeader - the wrapped content header
        body - the message body data
    • Method Detail

      • getMethod

        public Method getMethod()
        Public API - Retrieves the Method held within this Command. Downcast to concrete (implementation-specific!) subclasses as necessary.
        Specified by:
        getMethod in interface Command
        Returns:
        the command's method.
      • getContentHeader

        public AMQContentHeader getContentHeader()
        Public API - Retrieves the ContentHeader subclass instance held as part of this Command, if any. Downcast to one of the inner classes of AMQP, for instance AMQP.BasicProperties, as appropriate.
        Specified by:
        getContentHeader in interface Command
        Returns:
        the Command's ContentHeader, or null if none
      • getContentBody

        public byte[] getContentBody()
        Public API - Retrieves the body byte array that travelled as part of this Command, if any.
        Specified by:
        getContentBody in interface Command
        Returns:
        the Command's content body, or null if none
      • transmit

        public void transmit​(AMQChannel channel)
                      throws IOException
        Sends this command down the named channel on the channel's connection, possibly in multiple frames.
        Parameters:
        channel - the channel on which to transmit the command
        Throws:
        IOException - if an error is encountered
      • toString

        public String toString​(boolean suppressBody)
      • checkPreconditions

        public static void checkPreconditions()
        Called to check internal code assumptions.