## org.apache.axis.attachments
Class DimeDelimitedInputStream

    java.lang.Object
      java.io.InputStream
          java.io.FilterInputStream
              org.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.