com.rabbitmq.client.impl
Class Frame

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

public class Frame
extends java.lang.Object

Represents an AMQP wire-protocol frame, with frame type, channel number, and payload bytes. TODO: make state private


Field Summary
 int channel
          Frame channel number, 0-65535
 int type
          Frame type code
 
Constructor Summary
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
static long arraySize(java.util.List<?> values)
          Computes the AMQP wire-protocol length of an encoded field-array of type List
static long arraySize(java.lang.Object[] values)
          Computes the AMQP wire-protocol length of an encoded field-array of type Object[]
static Frame fromBodyFragment(int channelNumber, byte[] body, int offset, int length)
           
 java.io.DataInputStream getInputStream()
          Public API - retrieves a new DataInputStream streaming over the payload
 java.io.DataOutputStream getOutputStream()
          Public API - retrieves a fresh DataOutputStream streaming into the accumulator
 byte[] getPayload()
          Public API - retrieves the frame payload
static void protocolVersionMismatch(java.io.DataInputStream is)
          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(java.io.DataInputStream is)
          Protected API - Factory method to instantiate a Frame by reading an AMQP-wire-protocol frame from the given input stream.
static long tableSize(java.util.Map<java.lang.String,java.lang.Object> table)
          Computes the AMQP wire-protocol length of protocol-encoded table entries.
 java.lang.String toString()
           
 void writeTo(java.io.DataOutputStream os)
          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 Detail

type

public final int type
Frame type code


channel

public final int channel
Frame channel number, 0-65535

Constructor Detail

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 Detail

fromBodyFragment

public static Frame fromBodyFragment(int channelNumber,
                                     byte[] body,
                                     int offset,
                                     int length)
                              throws java.io.IOException
Throws:
java.io.IOException

readFrom

public static Frame readFrom(java.io.DataInputStream is)
                      throws java.io.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:
java.io.IOException

protocolVersionMismatch

public static void protocolVersionMismatch(java.io.DataInputStream is)
                                    throws java.io.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
java.io.IOException

writeTo

public void writeTo(java.io.DataOutputStream os)
             throws java.io.IOException
Public API - writes this Frame to the given DataOutputStream

Throws:
java.io.IOException

getPayload

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


getInputStream

public java.io.DataInputStream getInputStream()
Public API - retrieves a new DataInputStream streaming over the payload


getOutputStream

public java.io.DataOutputStream getOutputStream()
Public API - retrieves a fresh DataOutputStream streaming into the accumulator


toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

tableSize

public static long tableSize(java.util.Map<java.lang.String,java.lang.Object> table)
                      throws java.io.UnsupportedEncodingException
Computes the AMQP wire-protocol length of protocol-encoded table entries.

Throws:
java.io.UnsupportedEncodingException

arraySize

public static long arraySize(java.util.List<?> values)
                      throws java.io.UnsupportedEncodingException
Computes the AMQP wire-protocol length of an encoded field-array of type List

Throws:
java.io.UnsupportedEncodingException

arraySize

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

Throws:
java.io.UnsupportedEncodingException