# 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.

## Field Summary

Fields
Modifier and Type
Field
Description
`protected boolean`
`accessed`
`protected long`
`lastAccess`
`protected static final StringManager`
`sm`

## Constructor Summary

Constructors
Constructor
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

Modifier and Type
Method
Description
`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 Object

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

## Field Details

### sm

protected static final StringManager sm

### lastAccess

protected long lastAccess

### accessed

protected boolean accessed

## Constructor Details

### 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 Details

### access

public void access()

### finish

public void finish()

### isAccessed

public boolean isAccessed()

### append

public int append(ByteBuffer data, int len, boolean count)
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)
See Also:
  - `XByteBuffer.countPackages()`

### append

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

### execute

public ChannelMessage[] execute()
Send buffer to cluster listener (callback). Is message complete receiver send message to callback?

Returns:
  array of received packages/messages
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)