org.springframework.integration.ip.tcp
Class NioSocketWriter

java.lang.Object
  extended by org.springframework.integration.ip.tcp.AbstractSocketWriter
      extended by org.springframework.integration.ip.tcp.NioSocketWriter
All Implemented Interfaces:
MessageFormats, SocketWriter

public class NioSocketWriter
extends AbstractSocketWriter

A SocketWriter that writes to a SocketChannel. The data is wrapped in a wire protocol based on the messageFormat property.

Author:
Gary Russell

Field Summary
protected  java.nio.channels.SocketChannel channel
           
protected  java.nio.ByteBuffer crLfPart
          A buffer containing the CRLF for when the messageFormat is MessageFormats.FORMAT_CRLF.
protected  java.nio.ByteBuffer etxPart
          A buffer containing the ETX for when the messageFormat is MessageFormats.FORMAT_STX_ETX.
protected  java.nio.ByteBuffer lengthPart
          A buffer containing the length part when the messageFormat is MessageFormats.FORMAT_LENGTH_HEADER.
protected  java.nio.ByteBuffer stxPart
          A buffer containing the STX for when the messageFormat is MessageFormats.FORMAT_STX_ETX.
protected  boolean usingDirectBuffers
          If true, direct buffers are used.
 
Fields inherited from class org.springframework.integration.ip.tcp.AbstractSocketWriter
messageFormat
 
Fields inherited from interface org.springframework.integration.ip.tcp.MessageFormats
ETX, FORMAT_CRLF, FORMAT_CUSTOM, FORMAT_LENGTH_HEADER, FORMAT_STX_ETX, STX
 
Constructor Summary
NioSocketWriter(java.nio.channels.SocketChannel channel)
           
 
Method Summary
protected  void doClose()
          Called when an IO error
 void setUsingDirectBuffers(boolean usingDirectBuffers)
           
protected  void writeCrLfFormat(byte[] bytes)
          Write the data, followed by carriage return, line feed ('\r\n').
protected  void writeCustomFormat(byte[] bytes)
          Write the data using some custom protocol.
protected  void writeLengthFormat(byte[] bytes)
          Write the length of the data in a 4 byte integer (in network byte order) before the data itself.
protected  void writeStxEtxFormat(byte[] bytes)
          Write an STX (0x02) followed by the data, followed by ETX (0x03).
 
Methods inherited from class org.springframework.integration.ip.tcp.AbstractSocketWriter
setMessageFormat, write
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

channel

protected java.nio.channels.SocketChannel channel

usingDirectBuffers

protected boolean usingDirectBuffers
If true, direct buffers are used.

See Also:
ByteBuffer} for more information.

lengthPart

protected java.nio.ByteBuffer lengthPart
A buffer containing the length part when the messageFormat is MessageFormats.FORMAT_LENGTH_HEADER.


stxPart

protected java.nio.ByteBuffer stxPart
A buffer containing the STX for when the messageFormat is MessageFormats.FORMAT_STX_ETX.


etxPart

protected java.nio.ByteBuffer etxPart
A buffer containing the ETX for when the messageFormat is MessageFormats.FORMAT_STX_ETX.


crLfPart

protected java.nio.ByteBuffer crLfPart
A buffer containing the CRLF for when the messageFormat is MessageFormats.FORMAT_CRLF.

Constructor Detail

NioSocketWriter

public NioSocketWriter(java.nio.channels.SocketChannel channel)
Parameters:
socket -
Method Detail

setUsingDirectBuffers

public void setUsingDirectBuffers(boolean usingDirectBuffers)
Parameters:
usingDirectBuffers - the usingDirectBuffers to set

writeCrLfFormat

protected void writeCrLfFormat(byte[] bytes)
                        throws java.io.IOException
Description copied from class: AbstractSocketWriter
Write the data, followed by carriage return, line feed ('\r\n').

Specified by:
writeCrLfFormat in class AbstractSocketWriter
Throws:
java.io.IOException

writeCustomFormat

protected void writeCustomFormat(byte[] bytes)
                          throws java.io.IOException
Description copied from class: AbstractSocketWriter
Write the data using some custom protocol.

Specified by:
writeCustomFormat in class AbstractSocketWriter
Throws:
java.io.IOException

writeLengthFormat

protected void writeLengthFormat(byte[] bytes)
                          throws java.io.IOException
Description copied from class: AbstractSocketWriter
Write the length of the data in a 4 byte integer (in network byte order) before the data itself.

Specified by:
writeLengthFormat in class AbstractSocketWriter
Parameters:
bytes - The bytes to write.
Throws:
java.io.IOException

writeStxEtxFormat

protected void writeStxEtxFormat(byte[] bytes)
                          throws java.io.IOException
Description copied from class: AbstractSocketWriter
Write an STX (0x02) followed by the data, followed by ETX (0x03).

Specified by:
writeStxEtxFormat in class AbstractSocketWriter
Parameters:
bytes - The bytes to write.
Throws:
java.io.IOException

doClose

protected void doClose()
Description copied from class: AbstractSocketWriter
Called when an IO error

Specified by:
doClose in class AbstractSocketWriter