org.apache.catalina.tribes.io

## Class ObjectReader

- java.lang.Object
- - org.apache.catalina.tribes.io.ObjectReader

    public class ObjectReader
    extends 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. This object uses an XByteBuffer which is an extendable object buffer that also allows for message encoding and decoding.

Author:
  Filip Hanik

### Field Summary

Fields
`protected boolean` `accessed`
`protected long` `lastAccess`

### Constructor Summary

Constructors
Constructor and Description
`ObjectReader(int packetSize)`
`ObjectReader(Socket socket)` Creates an `ObjectReader` for a TCP socket
`ObjectReader(SocketChannel channel)` Creates an `ObjectReader` for a TCP NIO socket channel

### Method Summary

Methods
`void` `access()`
`int` `append(byte[] data, int off, int len, boolean count)`
`int` `append(ByteBuffer data, int len, boolean count)` Append new bytes to buffer.
`int` `bufferSize()`
`void` `close()`
`int` `count()` Returns the number of packages that the reader has read
`ChannelMessage[]` `execute()` Send buffer to cluster listener (callback).
`void` `finish()`
`long` `getLastAccess()`
`boolean` `hasPackage()`
`boolean` `isAccessed()`
`boolean` `isCancelled()`
`void` `setCancelled(boolean cancelled)`
`void` `setLastAccess(long lastAccess)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### lastAccess

    protected long lastAccess

#### accessed

    protected boolean accessed

### Constructor Detail

#### ObjectReader

    public ObjectReader(int packetSize)

#### ObjectReader

    public ObjectReader(SocketChannel channel)

Creates an `ObjectReader` for a TCP NIO socket channel

Parameters:
  `channel` - - the channel to be read.

#### ObjectReader

    public ObjectReader(Socket socket)

Creates an `ObjectReader` for a TCP socket

Parameters:
  `socket` - Socket

### Method Detail

#### access

    public void access()

#### finish

    public void finish()

#### isAccessed

    public boolean isAccessed()

#### append

    public int append(ByteBuffer data,
             int len,
             boolean count)
               throws IOException

Append new bytes to buffer.

Parameters:
  `data` - new transfer buffer
  `len` - length in buffer
  `count` - whether to return the count
Returns:
  number of messages that was sent to callback (or -1 if count == false)
Throws:
  `IOException`
See Also:
  `XByteBuffer.countPackages()`

#### append

    public int append(byte[] data,
             int off,
             int len,
             boolean count)
               throws IOException

Throws:
  `IOException`

#### execute

    public ChannelMessage[] execute()
                             throws IOException

Send buffer to cluster listener (callback). Is message complete receiver send message to callback?

Returns:
  number of received packages/messages
Throws:
  `IOException`
See Also:
  `ReceiverBase.messageDataReceived(ChannelMessage)`, `XByteBuffer.doesPackageExist()`, `XByteBuffer.extractPackage(boolean)`

#### bufferSize

    public int bufferSize()

#### hasPackage

    public boolean hasPackage()

#### count

    public int count()

Returns the number of packages that the reader has read

Returns:
  int

#### close

    public void close()

#### getLastAccess

    public long getLastAccess()

#### isCancelled

    public boolean isCancelled()

#### setLastAccess

    public void setLastAccess(long lastAccess)

#### setCancelled

    public void setCancelled(boolean cancelled)