org.apache.catalina.cluster.io
Class SocketObjectReader

java.lang.Object
  extended byorg.apache.catalina.cluster.io.SocketObjectReader

public class SocketObjectReader
extends java.lang.Object

The object reader object is an object used in conjunction with java.nio TCP messages. This object stores the message bytes in a XByteBuffer until a full package has been received. When a full package has been received, the append method will call messageDataReceived on the callback object associated with this object reader.
This object uses an XByteBuffer which is an extendable object buffer that also allows for message encoding and decoding.

Since:
5.5.10
Version:
$Id: SocketObjectReader.java 939539 2010-04-30 01:31:33Z kkolinko $
Author:
Filip Hanik, Peter Rossbach

Constructor Summary
SocketObjectReader(java.net.Socket socket, ListenCallback callback)
          use this socket and callback to receive messages
 
Method Summary
 int append(byte[] data, int off, int len)
          Append new bytes to buffer.
 int execute()
          send message to callback
 int write(byte[] data)
          write data to socket (ack)
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SocketObjectReader

public SocketObjectReader(java.net.Socket socket,
                          ListenCallback callback)
use this socket and callback to receive messages

Parameters:
socket - listener socket
callback - ClusterReceiverBase listener
Method Detail

append

public int append(byte[] data,
                  int off,
                  int len)
           throws java.io.IOException
Append new bytes to buffer. Is message complete receiver send message to callback

Parameters:
data - new transfer buffer
off - offset
len - length in buffer
Returns:
number of messages that sended to callback
Throws:
java.io.IOException
See Also:
ClusterReceiverBase.messageDataReceived(ClusterData), XByteBuffer.doesPackageExist(), XByteBuffer.extractPackage(boolean)

execute

public int execute()
            throws java.io.IOException
send message to callback

Returns:
Count of packages written
Throws:
java.io.IOException
See Also:
append(byte[], int, int)

write

public int write(byte[] data)
          throws java.io.IOException
write data to socket (ack)

Parameters:
data -
Returns:
Always zero
Throws:
java.io.IOException
See Also:
ClusterReceiverBase.sendAck()


Copyright © 2000-2012 Apache Software Foundation. All Rights Reserved.