org.mule.transport.tcp.protocols
Class LengthProtocol

java.lang.Object
  extended by org.mule.transport.tcp.protocols.AbstractByteProtocol
      extended by org.mule.transport.tcp.protocols.DirectProtocol
          extended by org.mule.transport.tcp.protocols.LengthProtocol
All Implemented Interfaces:
TcpProtocol
Direct Known Subclasses:
MuleMessageLengthProtocol

public class LengthProtocol
extends DirectProtocol

The LengthProtocol is an application level tcp protocol that can be used to transfer large amounts of data without risking some data to be loss. The protocol is defined by sending / reading an integer (the packet length) and then the data to be transferred.

Note that use of this protocol must be symmetric - both the sending and receiving connectors must use the same protocol.


Field Summary
static int NO_MAX_LENGTH
           
 
Fields inherited from class org.mule.transport.tcp.protocols.DirectProtocol
bufferSize, UNLIMITED
 
Fields inherited from class org.mule.transport.tcp.protocols.AbstractByteProtocol
EOF, NO_STREAM, STREAM_OK
 
Constructor Summary
LengthProtocol()
           
LengthProtocol(int maxMessageLength)
           
 
Method Summary
 int getMaxMessageLength()
           
protected  boolean isRepeat(int len, int available)
          Read all four bytes for initial integer (limit is set in read)
 Object read(InputStream is)
          Reads the input stream and returns a whole message.
 void setMaxMessageLength(int maxMessageLength)
           
protected  void writeByteArray(OutputStream os, byte[] data)
           
 
Methods inherited from class org.mule.transport.tcp.protocols.DirectProtocol
read, remaining
 
Methods inherited from class org.mule.transport.tcp.protocols.AbstractByteProtocol
copy, copy, createResponse, nullEmptyArray, safeRead, safeRead, write
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NO_MAX_LENGTH

public static final int NO_MAX_LENGTH
See Also:
Constant Field Values
Constructor Detail

LengthProtocol

public LengthProtocol()

LengthProtocol

public LengthProtocol(int maxMessageLength)
Method Detail

read

public Object read(InputStream is)
            throws IOException
Description copied from interface: TcpProtocol
Reads the input stream and returns a whole message.

Specified by:
read in interface TcpProtocol
Overrides:
read in class DirectProtocol
Parameters:
is - the input stream
Returns:
an array of byte containing a full message
Throws:
IOException - if an exception occurs

writeByteArray

protected void writeByteArray(OutputStream os,
                              byte[] data)
                       throws IOException
Overrides:
writeByteArray in class AbstractByteProtocol
Throws:
IOException

isRepeat

protected boolean isRepeat(int len,
                           int available)
Read all four bytes for initial integer (limit is set in read)

Overrides:
isRepeat in class DirectProtocol
Parameters:
len - Amount transferred last call (-1 on EOF or socket error)
available - Amount available
Returns:
true if the transfer should continue

getMaxMessageLength

public int getMaxMessageLength()

setMaxMessageLength

public void setMaxMessageLength(int maxMessageLength)


Copyright © 2003-2009 MuleSource, Inc.. All Rights Reserved.