org.apache.axis.attachments

Class DimeDelimitedInputStream

public class DimeDelimitedInputStream extends FilterInputStream

This class takes the input stream and turns it multiple streams. DIME version 0 format
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  ---
 | VERSION |B|E|C| TYPE_T| OPT_T |         OPTIONS_LENGTH        |   A
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |          ID_LENGTH          |             TYPE_LENGTH         |   Always present 12 bytes
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   even on chunked data.
 |                          DATA_LENGTH                          |   V
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  ---
 |                                                               /
 /                       OPTIONS + PADDING                       /
 /                     (absent for version 0)                    |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               /
 /                        ID + PADDING                           /
 /                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               /
 /                        TYPE + PADDING                         /
 /                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               /
 /                        DATA + PADDING                         /
 /                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
This implementation of input stream does not support marking operations.

Author: Rick Rineholt

Field Summary
protected static Loglog
protected static intstreamCount
protected IOExceptionstreamInError
protected intstreamNo
Method Summary
intavailable()
voidclose()
Closes the stream.
protected voidfinalClose()
StringgetContentId()
Get the id for this stream part.
DimeTypeNameFormatgetDimeTypeNameFormat()
StringgetType()
Get the type, as read from the header.
voidmark(int readlimit)
Mark the stream.
booleanmarkSupported()
protected static intnewStreamNo()
intread(byte[] b, int off, int len)
Read from the DIME stream.
intread(byte[] b)
Read from the delimited stream.
intread()
Read from the boundary delimited stream.
voidreset()
protected int_read(byte[] b, int off, int len)

Field Detail

log

protected static Log log

streamCount

protected static int streamCount

streamInError

protected IOException streamInError

streamNo

protected int streamNo

Method Detail

available

public int available()

close

public void close()
Closes the stream.

This will take care of flushing any remaining data to the strea.

Multiple calls to this method will result in the stream being closed once and then all subsequent calls being ignored.

Throws: IOException if the stream could not be closed

finalClose

protected void finalClose()

getContentId

public String getContentId()
Get the id for this stream part.

Returns: the id;

getDimeTypeNameFormat

public DimeTypeNameFormat getDimeTypeNameFormat()

getType

public String getType()
Get the type, as read from the header.

Returns: the type of this dime

mark

public void mark(int readlimit)
Mark the stream. This is not supported.

markSupported

public boolean markSupported()

newStreamNo

protected static int newStreamNo()

read

public int read(byte[] b, int off, int len)
Read from the DIME stream.

Parameters: b is the array to read into. off is the offset

Returns: the number of bytes read. -1 if endof stream

Throws: IOException if data could not be read from the stream

read

public int read(byte[] b)
Read from the delimited stream.

Parameters: b is the array to read into. Read as much as possible into the size of this array.

Returns: the number of bytes read. -1 if endof stream

Throws: IOException if data could not be read from the stream

read

public int read()
Read from the boundary delimited stream.

Returns: the byte read, or -1 if endof stream

Throws: IOException if there was an error reading the data

reset

public void reset()

_read

protected int _read(byte[] b, int off, int len)
Copyright B) 2005 Apache Web Services Project. All Rights Reserved.