This class can be used to stream LOBs from Network client to the Network server.
To be able to correctly stream data from the client without reading the while value up front, a trailing Derby-specific status byte was introduced (version 10.6). It is used by the client to tell the server if the data it received was valid, or if it detected an error while streaming the data. The DRDA protocol, or at least Derby's implementation of it, doesn't enable the client to inform the server about the error whilst streaming (there is a mechanism in DRDA to interrupt a running request, but it didn't seem like a feasible approach in this case).
| Modifier and Type | Field and Description |
|---|---|
| protected final boolean | isLayerBStream
Whether or not the subclass is a layer B stream. |
| protected final boolean | readStatusByte
Whether or not to read the trailing Derby-specific status byte. |
| private byte | status
The status Derby-specific status byte, if any. |
| private boolean | statusSet
Tells if the status byte has been set. |
| private boolean | suppressException
Whether or not to suppress the exception when an error is indicated by the status byte. |
| Access | Constructor and Description |
|---|---|
| protected | EXTDTAReaderInputStream(boolean
whether or not DDM layer B streaming is being used layerB, boolean whether or not to read the trailing Derby-specific
status byte readStatusByte)Initializes the class. |
| Modifier and Type | Method and Description |
|---|---|
| protected void | checkStatus(int
the status flag sent by the client clientStatus)Interprets the Derby-specific status byte, and throws an exception if an error condition has been detected on the client. |
| public byte | |
| public boolean | |
| public boolean | |
| protected abstract void | |
| private void | |
| pack-priv void | setSuppressException(boolean
true to suppress, false to throw exception
if an error condition is indicated by the status flagSets whether or not to suppress the exception when setting the status. |
| pack-priv static void | throwEXTDTATransferException(int
the EXTDTA status byte received from the client, should
not be DRDAConstants#STREAM_OK status)Throws an exception as mandated by the EXTDTA status byte. |
| isLayerBStream | back to summary |
|---|---|
| protected final boolean isLayerBStream Whether or not the subclass is a layer B stream. | |
| readStatusByte | back to summary |
|---|---|
| protected final boolean readStatusByte Whether or not to read the trailing Derby-specific status byte. | |
| status | back to summary |
|---|---|
| private byte status The status Derby-specific status byte, if any.
| |
| statusSet | back to summary |
|---|---|
| private boolean statusSet Tells if the status byte has been set.
| |
| suppressException | back to summary |
|---|---|
| private boolean suppressException Whether or not to suppress the exception when an error is indicated by the status byte. | |
| EXTDTAReaderInputStream | back to summary |
|---|---|
| protected EXTDTAReaderInputStream(boolean layerB, boolean readStatusByte) Initializes the class.
| |
| checkStatus | back to summary |
|---|---|
| protected void checkStatus(int clientStatus) throws IOException Interprets the Derby-specific status byte, and throws an exception if an error condition has been detected on the client.
| |
| getStatus | back to summary |
|---|---|
| public byte getStatus() Returns the status byte. Note Check if the status byte has been set by calling isStatusSet().
| |
| isLayerBStream | back to summary |
|---|---|
| public boolean isLayerBStream() | |
| isStatusSet | back to summary |
|---|---|
| public boolean isStatusSet() Returns whether the status has been set or not.
| |
| onClientSideStreamingError | back to summary |
|---|---|
| protected abstract void onClientSideStreamingError() Performs necessary clean up when an error is signalled by the client. | |
| setStatus | back to summary |
|---|---|
| private void setStatus(int status) Saves the status byte read off the wire.
| |
| setSuppressException | back to summary |
|---|---|
| pack-priv void setSuppressException(boolean flag) Sets whether or not to suppress the exception when setting the status.
| |
| throwEXTDTATransferException | back to summary |
|---|---|
| pack-priv static void throwEXTDTATransferException(int status) throws IOException Throws an exception as mandated by the EXTDTA status byte.
| |