Package com.sun.corba.ee.impl.encoding
Class BufferManagerReadStream
- java.lang.Object
-
- com.sun.corba.ee.impl.encoding.BufferManagerReadStream
-
- All Implemented Interfaces:
BufferManagerRead
,MarkAndResetHandler
public class BufferManagerReadStream extends java.lang.Object implements BufferManagerRead, MarkAndResetHandler
-
-
Field Summary
Fields Modifier and Type Field Description private int
cancelReqId
private boolean
endOfStream
private BufferQueue
fragmentQueue
private java.util.LinkedList<java.nio.ByteBuffer>
fragmentStack
private RestorableInputStream
inputStream
private boolean
markEngaged
private ORB
orb
private boolean
receivedCancel
private java.lang.Object
streamMemento
private static ORBUtilSystemException
wrapper
-
Constructor Summary
Constructors Constructor Description BufferManagerReadStream(ORB orb)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
bufferMessage(java.lang.String msg, int bbAddr, java.lang.String tail)
void
cancelProcessing(int requestId)
Signals that the processing be cancelled.void
close(java.nio.ByteBuffer byteBuffer)
Close BufferManagerRead and perform any outstanding cleanup.void
fragmentationOccured(java.nio.ByteBuffer newFrament)
protected ByteBufferPool
getByteBufferPool()
MarkAndResetHandler
getMarkAndResetHandler()
Returns the mark/reset handler for this stream.void
init(Message msg)
Called once after creating this buffer manager and before it begins processing.boolean
isFragmentOnUnderflow()
Returns true if this buffer manager reads fragments when it underflows.private void
logBufferMessage(java.lang.String prefix, java.nio.ByteBuffer byteBuffer, java.lang.String suffix)
void
mark(RestorableInputStream inputStream)
void
processFragment(java.nio.ByteBuffer byteBuffer, FragmentMessage msg)
Case: Called from ReaderThread on complete message or fragments.void
reset()
java.nio.ByteBuffer
underflow(java.nio.ByteBuffer byteBuffer)
Invoked when we run out of data to read.private void
underflowMessage(java.lang.String msg, int rid)
-
-
-
Field Detail
-
wrapper
private static final ORBUtilSystemException wrapper
-
receivedCancel
private volatile boolean receivedCancel
-
cancelReqId
private int cancelReqId
-
endOfStream
private boolean endOfStream
-
fragmentQueue
private final BufferQueue fragmentQueue
-
orb
private final ORB orb
-
markEngaged
private boolean markEngaged
-
fragmentStack
private java.util.LinkedList<java.nio.ByteBuffer> fragmentStack
-
inputStream
private RestorableInputStream inputStream
-
streamMemento
private java.lang.Object streamMemento
-
-
Constructor Detail
-
BufferManagerReadStream
BufferManagerReadStream(ORB orb)
-
-
Method Detail
-
cancelProcessing
public void cancelProcessing(int requestId)
Description copied from interface:BufferManagerRead
Signals that the processing be cancelled.- Specified by:
cancelProcessing
in interfaceBufferManagerRead
- Parameters:
requestId
- ID of the request to cancel
-
bufferMessage
@InfoMethod private void bufferMessage(java.lang.String msg, int bbAddr, java.lang.String tail)
-
processFragment
public void processFragment(java.nio.ByteBuffer byteBuffer, FragmentMessage msg)
Description copied from interface:BufferManagerRead
Case: Called from ReaderThread on complete message or fragments. The given buffer may be entire message or a fragment. The ReaderThread finds the ReadBufferManager instance either in in a fragment map (when collecting - GIOP 1.2 phase 1) or in an active server requests map (when streaming - GIOP 1.2 phase 2). As a model for implementation see IIOPInputStream's constructor of the same name. There are going to be some variations.- Specified by:
processFragment
in interfaceBufferManagerRead
- Parameters:
byteBuffer
- buffer to read frommsg
- header of fragment
-
underflowMessage
@InfoMethod private void underflowMessage(java.lang.String msg, int rid)
-
underflow
public java.nio.ByteBuffer underflow(java.nio.ByteBuffer byteBuffer)
Description copied from interface:BufferManagerRead
Invoked when we run out of data to read. Obtains more data from the stream.- Specified by:
underflow
in interfaceBufferManagerRead
- Parameters:
byteBuffer
- Current buffer, to return to pool- Returns:
- Buffer containing new data
- See Also:
BufferManagerRead.isFragmentOnUnderflow()
-
isFragmentOnUnderflow
public boolean isFragmentOnUnderflow()
Description copied from interface:BufferManagerRead
Returns true if this buffer manager reads fragments when it underflows.- Specified by:
isFragmentOnUnderflow
in interfaceBufferManagerRead
- Returns:
- if fragments will be read.
- See Also:
BufferManagerRead.underflow(ByteBuffer)
-
init
public void init(Message msg)
Description copied from interface:BufferManagerRead
Called once after creating this buffer manager and before it begins processing.- Specified by:
init
in interfaceBufferManagerRead
- Parameters:
msg
- message header
-
close
public void close(java.nio.ByteBuffer byteBuffer)
Description copied from interface:BufferManagerRead
Close BufferManagerRead and perform any outstanding cleanup.- Specified by:
close
in interfaceBufferManagerRead
- Parameters:
byteBuffer
- buffer to return to the pool
-
logBufferMessage
private void logBufferMessage(java.lang.String prefix, java.nio.ByteBuffer byteBuffer, java.lang.String suffix)
-
getByteBufferPool
protected ByteBufferPool getByteBufferPool()
-
mark
public void mark(RestorableInputStream inputStream)
- Specified by:
mark
in interfaceMarkAndResetHandler
-
fragmentationOccured
public void fragmentationOccured(java.nio.ByteBuffer newFrament)
- Specified by:
fragmentationOccured
in interfaceMarkAndResetHandler
-
reset
public void reset()
- Specified by:
reset
in interfaceMarkAndResetHandler
-
getMarkAndResetHandler
public MarkAndResetHandler getMarkAndResetHandler()
Description copied from interface:BufferManagerRead
Returns the mark/reset handler for this stream.- Specified by:
getMarkAndResetHandler
in interfaceBufferManagerRead
- Returns:
- The mark/reset handler for this stream.
-
-