org.apache.axis.attachments
Class DimeDelimitedInputStream

java.lang.Object
  extended byjava.io.InputStream
      extended byjava.io.FilterInputStream
          extended byorg.apache.axis.attachments.DimeDelimitedInputStream

public class DimeDelimitedInputStream
extends java.io.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 org.apache.commons.logging.Log log
           
protected static int streamCount
           
protected  java.io.IOException streamInError
           
protected  int streamNo
           
 
Fields inherited from class java.io.FilterInputStream
in
 
Method Summary
protected  int _read(byte[] b, int off, int len)
           
 int available()
           
 void close()
          Closes the stream.
protected  void finalClose()
           
 java.lang.String getContentId()
          Get the id for this stream part.
 DimeTypeNameFormat getDimeTypeNameFormat()
           
 java.lang.String getType()
          Get the type, as read from the header.
 void mark(int readlimit)
          Mark the stream.
 boolean markSupported()
           
protected static int newStreamNo()
           
 int read()
          Read from the boundary delimited stream.
 int read(byte[] b)
          Read from the delimited stream.
 int read(byte[] b, int off, int len)
          Read from the DIME stream.
 void reset()
           
 
Methods inherited from class java.io.FilterInputStream
skip
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

log

protected static org.apache.commons.logging.Log log

streamNo

protected int streamNo

streamInError

protected java.io.IOException streamInError

streamCount

protected static int streamCount
Method Detail

newStreamNo

protected static int newStreamNo()

getContentId

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

Returns:
the id;

getDimeTypeNameFormat

public DimeTypeNameFormat getDimeTypeNameFormat()

getType

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

Returns:
the type of this dime

read

public int read(byte[] b,
                int off,
                int len)
         throws java.io.IOException
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:
java.io.IOException - if data could not be read from the stream

_read

protected int _read(byte[] b,
                    int off,
                    int len)
             throws java.io.IOException
Throws:
java.io.IOException

read

public int read(byte[] b)
         throws java.io.IOException
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:
java.io.IOException - if data could not be read from the stream

read

public int read()
         throws java.io.IOException
Read from the boundary delimited stream.

Returns:
the byte read, or -1 if endof stream
Throws:
java.io.IOException - if there was an error reading the data

close

public void close()
           throws java.io.IOException
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:
java.io.IOException - if the stream could not be closed

mark

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


reset

public void reset()
           throws java.io.IOException
Throws:
java.io.IOException

markSupported

public boolean markSupported()

available

public int available()
              throws java.io.IOException
Throws:
java.io.IOException

finalClose

protected void finalClose()
                   throws java.io.IOException
Throws:
java.io.IOException


Copyright © 2005 Apache Web Services Project. All Rights Reserved.