Class Frame

java.lang.Object
com.rabbitmq.client.impl.Frame

public class Frame extends Object
Represents an AMQP wire-protocol frame, with frame type, channel number, and payload bytes. TODO: make state private
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    final int
    Frame channel number, 0-65535
    final int
    Frame type code
  • Constructor Summary

    Constructors
    Constructor
    Description
    Frame(int type, int channel)
    Constructs a frame for output with a type and a channel number and a fresh accumulator waiting for payload.
    Frame(int type, int channel, byte[] payload)
    Constructs a frame for input with a type, a channel number and a payload byte array.
  • Method Summary

    Modifier and Type
    Method
    Description
    static long
    arraySize(Object[] values)
    Computes the AMQP wire-protocol length of an encoded field-array of type Object[]
    static long
    arraySize(List<?> values)
    Computes the AMQP 0-9-1 wire-protocol length of an encoded field-array of type List
    static Frame
    fromBodyFragment(int channelNumber, byte[] body, int offset, int length)
     
    Public API - retrieves a new DataInputStream streaming over the payload
    Public API - retrieves a fresh DataOutputStream streaming into the accumulator
    byte[]
    Public API - retrieves the frame payload
    static void
    Private API - A protocol version mismatch is detected by checking the three next bytes if a frame type of (int)'A' is read from an input stream.
    static Frame
    readFrom(DataInputStream is, int maxPayloadSize)
    Protected API - Factory method to instantiate a Frame by reading an AMQP-wire-protocol frame from the given input stream.
    int
     
    static long
    Computes the AMQP wire-protocol length of protocol-encoded table entries.
     
    void
    Public API - writes this Frame to the given DataOutputStream

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • type

      public final int type
      Frame type code
    • channel

      public final int channel
      Frame channel number, 0-65535
  • Constructor Details

    • Frame

      public Frame(int type, int channel)
      Constructs a frame for output with a type and a channel number and a fresh accumulator waiting for payload.
    • Frame

      public Frame(int type, int channel, byte[] payload)
      Constructs a frame for input with a type, a channel number and a payload byte array.
  • Method Details

    • fromBodyFragment

      public static Frame fromBodyFragment(int channelNumber, byte[] body, int offset, int length) throws IOException
      Throws:
      IOException
    • readFrom

      public static Frame readFrom(DataInputStream is, int maxPayloadSize) throws IOException
      Protected API - Factory method to instantiate a Frame by reading an AMQP-wire-protocol frame from the given input stream.
      Returns:
      a new Frame if we read a frame successfully, otherwise null
      Throws:
      IOException
    • protocolVersionMismatch

      public static void protocolVersionMismatch(DataInputStream is) throws IOException
      Private API - A protocol version mismatch is detected by checking the three next bytes if a frame type of (int)'A' is read from an input stream. If the next three bytes are 'M', 'Q' and 'P', then it's likely the broker is trying to tell us we are speaking the wrong AMQP protocol version.
      Throws:
      MalformedFrameException - if an AMQP protocol version mismatch is detected
      MalformedFrameException - if a corrupt AMQP protocol identifier is read
      IOException
    • writeTo

      public void writeTo(DataOutputStream os) throws IOException
      Public API - writes this Frame to the given DataOutputStream
      Throws:
      IOException
    • size

      public int size()
    • getPayload

      public byte[] getPayload()
      Public API - retrieves the frame payload
    • getInputStream

      public DataInputStream getInputStream()
      Public API - retrieves a new DataInputStream streaming over the payload
    • getOutputStream

      public DataOutputStream getOutputStream()
      Public API - retrieves a fresh DataOutputStream streaming into the accumulator
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • tableSize

      public static long tableSize(Map<String,Object> table) throws UnsupportedEncodingException
      Computes the AMQP wire-protocol length of protocol-encoded table entries.
      Throws:
      UnsupportedEncodingException
    • arraySize

      public static long arraySize(List<?> values) throws UnsupportedEncodingException
      Computes the AMQP 0-9-1 wire-protocol length of an encoded field-array of type List
      Throws:
      UnsupportedEncodingException
    • arraySize

      public static long arraySize(Object[] values) throws UnsupportedEncodingException
      Computes the AMQP wire-protocol length of an encoded field-array of type Object[]
      Throws:
      UnsupportedEncodingException