Spring Integration

org.springframework.integration.ip.tcp
Class NetSocketReader

java.lang.Object
  extended by org.springframework.integration.ip.tcp.AbstractSocketReader
      extended by org.springframework.integration.ip.tcp.NetSocketReader
All Implemented Interfaces:
MessageFormats, SocketReader

public class NetSocketReader
extends AbstractSocketReader

A SocketReader that reads from a Socket. Threads calling AbstractSocketReader.assembledData will block until a message is completely assembled.

Since:
2.0
Author:
Gary Russell

Field Summary
protected  org.apache.commons.logging.Log logger
           
protected  ObjectInputStream objectInputStream
           
protected  Socket socket
           
 
Fields inherited from class org.springframework.integration.ip.tcp.AbstractSocketReader
assembledData, maxMessageSize, messageFormat
 
Fields inherited from interface org.springframework.integration.ip.tcp.SocketReader
MESSAGE_COMPLETE, MESSAGE_INCOMPLETE, SOCKET_CLOSED
 
Fields inherited from interface org.springframework.integration.ip.tcp.MessageFormats
ETX, FORMAT_CRLF, FORMAT_CUSTOM, FORMAT_IMPLICIT, FORMAT_JAVA_SERIALIZED, FORMAT_LENGTH_HEADER, FORMAT_STX_ETX, STX
 
Constructor Summary
NetSocketReader(Socket socket)
          Constructs a NetsocketReader which reads from the Socket.
 
Method Summary
protected  int assembleDataCrLfFormat()
          Assembles data in format MessageFormats.FORMAT_CRLF.
protected  int assembleDataCustomFormat()
          Throws UnsupportedOperationException; custom implementations can subclass this class and provide an implementation for this method.
protected  int assembleDataLengthFormat()
          Assembles data in format MessageFormats.FORMAT_LENGTH_HEADER.
protected  int assembleDataSerializedFormat()
          Assembles data in format MessageFormats.FORMAT_JAVA_SERIALIZED
protected  int assembleDataStxEtxFormat()
          Assembles data in format MessageFormats.FORMAT_STX_ETX.
protected  void doClose()
          Called after an exception; close the transport.
 InetAddress getAddress()
          Returns the InetAddress of the underlying socket.
 Socket getSocket()
           
protected  int read(byte[] buffer, boolean header)
          Reads data from the socket and puts the data in buffer.
 
Methods inherited from class org.springframework.integration.ip.tcp.AbstractSocketReader
assembleData, getAssembledData, setMaxMessageSize, setMessageFormat
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

protected final org.apache.commons.logging.Log logger

socket

protected Socket socket

objectInputStream

protected ObjectInputStream objectInputStream
Constructor Detail

NetSocketReader

public NetSocketReader(Socket socket)
Constructs a NetsocketReader which reads from the Socket.

Parameters:
socket - The socket.
Method Detail

assembleDataLengthFormat

protected int assembleDataLengthFormat()
                                throws IOException
Description copied from class: AbstractSocketReader
Assembles data in format MessageFormats.FORMAT_LENGTH_HEADER.

Specified by:
assembleDataLengthFormat in class AbstractSocketReader
Returns:
SocketReader.MESSAGE_COMPLETE when message is assembled, otherwise SocketReader.MESSAGE_IMCOMPLETE, or < 0 if socket closed before any data for a message is received.
Throws:
IOException

assembleDataStxEtxFormat

protected int assembleDataStxEtxFormat()
                                throws IOException
Description copied from class: AbstractSocketReader
Assembles data in format MessageFormats.FORMAT_STX_ETX.

Specified by:
assembleDataStxEtxFormat in class AbstractSocketReader
Returns:
SocketReader.MESSAGE_COMPLETE when message is assembled, otherwise SocketReader.MESSAGE_IMCOMPLETE, or < 0 if socket closed before any data for a message is received.
Throws:
IOException

assembleDataCrLfFormat

protected int assembleDataCrLfFormat()
                              throws IOException
Description copied from class: AbstractSocketReader
Assembles data in format MessageFormats.FORMAT_CRLF.

Specified by:
assembleDataCrLfFormat in class AbstractSocketReader
Returns:
SocketReader.MESSAGE_COMPLETE when message is assembled, otherwise SocketReader.MESSAGE_IMCOMPLETE, or < 0 if socket closed before any data for a message is received.
Throws:
IOException

assembleDataSerializedFormat

protected int assembleDataSerializedFormat()
                                    throws IOException
Description copied from class: AbstractSocketReader
Assembles data in format MessageFormats.FORMAT_JAVA_SERIALIZED

Specified by:
assembleDataSerializedFormat in class AbstractSocketReader
Returns:
SocketReader.MESSAGE_COMPLETE when message is assembled, otherwise SocketReader.MESSAGE_IMCOMPLETE, or < 0 if socket closed before any data for a message is received.
Throws:
IOException

assembleDataCustomFormat

protected int assembleDataCustomFormat()
                                throws IOException
Throws UnsupportedOperationException; custom implementations can subclass this class and provide an implementation for this method.

Specified by:
assembleDataCustomFormat in class AbstractSocketReader
Returns:
True when a message is completely assembled.
Throws:
IOException
See Also:
AbstractSocketReader.assembleDataCustomFormat()

read

protected int read(byte[] buffer,
                   boolean header)
            throws IOException
Reads data from the socket and puts the data in buffer. Blocks until buffer is full or a socket timeout occurs.

Parameters:
buffer -
header - true if we are reading the header
Returns:
< 0 if socket closed and not in the middle of a message
Throws:
IOException

doClose

protected void doClose()
Description copied from class: AbstractSocketReader
Called after an exception; close the transport.

Specified by:
doClose in class AbstractSocketReader

getAddress

public InetAddress getAddress()
Description copied from interface: SocketReader
Returns the InetAddress of the underlying socket.

Returns:
The InetAddress.

getSocket

public Socket getSocket()
Returns:
the Socket

Spring Integration

Copyright © 2010. All Rights Reserved.