org.codehaus.activemq.io
Interface WireFormat

All Known Implementing Classes:
AbstractWireFormat

public interface WireFormat

Represents a strategy of encoding packets on the wire or on disk using some kind of serialization or wire format.

We use a default efficient format for Java to Java communication but other formats to other systems can be used, such as using simple text strings when talking to JavaScript or coming up with other formats for talking to C / C# languages or proprietary messaging systems we wish to interface with at the wire level etc.

Version:
$Revision: 1.1 $

Method Summary
 boolean canProcessWireFormatVersion(int version)
          Can this wireformat process packets of this version
 WireFormat copy()
          Creates a new copy of this wire format so it can be used in another thread/context
 Packet fromBytes(byte[] bytes)
          Reads the packet from the given byte[]
 Packet fromBytes(byte[] bytes, int offset, int length)
          Reads the packet from the given byte[]
 int getCurrentWireFormatVersion()
           
 void initiateProtocol(DataOutput dataOut)
          Some wire formats require a handshake at start-up
 Packet readPacket(DataInput in)
          Reads a packet from the given input stream
 Packet readPacket(int firstByte, DataInput in)
          A helper method for working with sockets where the first byte is read first, then the rest of the message is read.
 Packet readPacket(String channelID, DatagramPacket dpacket)
          Read a packet from a Datagram packet from the given channelID.
 byte[] toBytes(Packet packet)
          A helper method which converts a packet into a byte array
 void writePacket(Packet packet, DataOutput out)
          Writes the packet to the given output stream
 DatagramPacket writePacket(String channelID, Packet packet)
          Writes the given package to a new datagram
 

Method Detail

readPacket

public Packet readPacket(DataInput in)
                  throws IOException
Reads a packet from the given input stream

Parameters:
in -
Returns:
Throws:
IOException

readPacket

public Packet readPacket(int firstByte,
                         DataInput in)
                  throws IOException
A helper method for working with sockets where the first byte is read first, then the rest of the message is read.

Its common when dealing with sockets to have different timeout semantics until the first non-zero byte is read of a message, after which time a zero timeout is used.

Parameters:
firstByte - the first byte of the packet
in - the rest of the packet
Returns:
Throws:
IOException

readPacket

public Packet readPacket(String channelID,
                         DatagramPacket dpacket)
                  throws IOException
Read a packet from a Datagram packet from the given channelID. If the packet is from the same channel ID as it was sent then we have a loop-back so discard the packet

Parameters:
channelID - is the unique channel ID
dpacket -
Returns:
the packet read from the datagram or null if it should be discarded
Throws:
IOException

writePacket

public void writePacket(Packet packet,
                        DataOutput out)
                 throws IOException,
                        JMSException
Writes the packet to the given output stream

Parameters:
packet -
out -
Throws:
IOException
JMSException

writePacket

public DatagramPacket writePacket(String channelID,
                                  Packet packet)
                           throws IOException,
                                  JMSException
Writes the given package to a new datagram

Parameters:
channelID - is the unique channel ID
packet - is the packet to write
Returns:
Throws:
IOException
JMSException

fromBytes

public Packet fromBytes(byte[] bytes,
                        int offset,
                        int length)
                 throws IOException
Reads the packet from the given byte[]

Parameters:
bytes -
offset -
length -
Returns:
Throws:
IOException

fromBytes

public Packet fromBytes(byte[] bytes)
                 throws IOException
Reads the packet from the given byte[]

Parameters:
bytes -
Returns:
Throws:
IOException

toBytes

public byte[] toBytes(Packet packet)
               throws IOException,
                      JMSException
A helper method which converts a packet into a byte array

Parameters:
packet -
Returns:
a byte array representing the packet using some wire protocol
Throws:
IOException
JMSException

copy

public WireFormat copy()
Creates a new copy of this wire format so it can be used in another thread/context

Returns:

canProcessWireFormatVersion

public boolean canProcessWireFormatVersion(int version)
Can this wireformat process packets of this version

Parameters:
version - the version number to test
Returns:
true if can accept the version

getCurrentWireFormatVersion

public int getCurrentWireFormatVersion()
Returns:
the current version of this wire format

initiateProtocol

public void initiateProtocol(DataOutput dataOut)
                      throws IOException,
                             JMSException
Some wire formats require a handshake at start-up

Parameters:
dataOut -
Throws:
IOException
JMSException


Copyright © 2004-2005 Protique, Ltd.. All Rights Reserved.