## org.apache.coyote.tomcat5
Class OutputBuffer

    java.lang.Object
      java.io.Writer
          org.apache.coyote.tomcat5.OutputBuffer

All Implemented Interfaces:
  ByteChunk.ByteOutputChannel, CharChunk.CharOutputChannel

public class OutputBuffer
extends java.io.Writer
implements ByteChunk.ByteOutputChannel, CharChunk.CharOutputChannel

The buffer used by Tomcat response. This is a derivative of the Tomcat 3.3 OutputBuffer, with the removal of some of the state handling (which in Coyote is mostly the Processor's responsability).

Author:
  Costin Manolache, Remy Maucherat

Field Summary
`int` `BYTE_STATE`
`int` `CHAR_STATE`
`protected C2BConverter` `conv` Current char to byte converter.
`static int` `DEFAULT_BUFFER_SIZE`
`static java.lang.String` `DEFAULT_ENCODING`
`protected java.util.HashMap` `encoders` List of encoders.
`int` `INITIAL_STATE`

Fields inherited from class java.io.Writer
`lock`

Constructor Summary
`OutputBuffer()` Default constructor.
`OutputBuffer(int size)` Alternate constructor which allows specifying the initial buffer size.

Method Summary
`void` `checkConverter()`
`void` `close()` Close the output buffer.
`protected void` `doFlush(boolean realFlush)` Flush bytes or chars contained in the buffer.
`void` `flush()` Flush bytes or chars contained in the buffer.
`void` `flushBytes()` Real write - this buffer will be sent to the client
`void` `flushChars()`
`boolean` `flushCharsNeeded()`
`int` `getBufferSize()`
`int` `getBytesWritten()`
`int` `getCharsWritten()`
`int` `getContentWritten()`
`Response` `getResponse()` Get associated Coyote response.
`boolean` `isNew()` True if this buffer hasn't been used ( since recycle() ) - i.e.
`boolean` `isSuspended()` Is the response output suspended ?
`protected void` `log(java.lang.String s)`
`void` `realWriteBytes(byte[] buf, int off, int cnt)` Sends the buffer data to the client output, checking the state of Response and calling the right interceptors.
`void` `realWriteChars(char[] c, int off, int len)` Send the bytes ( usually the internal conversion buffer ).
`void` `recycle()` Recycle the output buffer.
`void` `reset()`
`void` `setBufferSize(int size)`
`protected void` `setConverter()`
`void` `setEncoding(java.lang.String s)`
`void` `setResponse(Response coyoteResponse)` Associated Coyote response.
`void` `setSuspended(boolean suspended)` Set the suspended flag.
`void` `write(byte[] b, int off, int len)`
`void` `write(char[] c)`
`void` `write(char[] c, int off, int len)`
`void` `write(int c)`
`void` `write(java.lang.String s)`
`void` `write(java.lang.StringBuffer sb)`
`void` `write(java.lang.String s, int off, int len)` Append a string to the buffer
`void` `writeByte(int b)`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### DEFAULT_ENCODING

    public static final java.lang.String DEFAULT_ENCODING

See Also:
  Constant Field Values

### DEFAULT_BUFFER_SIZE

    public static final int DEFAULT_BUFFER_SIZE

See Also:
  Constant Field Values

### INITIAL_STATE

    public final int INITIAL_STATE

See Also:
  Constant Field Values

### CHAR_STATE

    public final int CHAR_STATE

See Also:
  Constant Field Values

### BYTE_STATE

    public final int BYTE_STATE

See Also:
  Constant Field Values

### encoders

    protected java.util.HashMap encoders

  List of encoders.

### conv

    protected C2BConverter conv

  Current char to byte converter.

Constructor Detail

### OutputBuffer

    public OutputBuffer()

  Default constructor. Allocate the buffer with the default buffer size.

### OutputBuffer

    public OutputBuffer(int size)

  Alternate constructor which allows specifying the initial buffer size.

Parameters:
  `size` - Buffer size to use

Method Detail

### setResponse

    public void setResponse(Response coyoteResponse)

  Associated Coyote response.

  Parameters:
    `coyoteResponse` - Associated Coyote response

### getResponse

    public Response getResponse()

  Get associated Coyote response.

  Returns:
    the associated Coyote response

### isSuspended

    public boolean isSuspended()

  Is the response output suspended ?

  Returns:
    suspended flag value

### setSuspended

    public void setSuspended(boolean suspended)

  Set the suspended flag.

  Parameters:
    `suspended` - New suspended flag value

### recycle

    public void recycle()

  Recycle the output buffer.

### close

    public void close()
               throws java.io.IOException

  Close the output buffer. This tries to calculate the response size if the response has not been committed yet.

  Throws:
    `java.io.IOException` - An underlying IOException occurred

### flush

    public void flush()
               throws java.io.IOException

  Flush bytes or chars contained in the buffer.

  Throws:
    `java.io.IOException` - An underlying IOException occurred

### doFlush

    protected void doFlush(boolean realFlush)
                    throws java.io.IOException

  Flush bytes or chars contained in the buffer.

  Throws:
    `java.io.IOException` - An underlying IOException occurred

### realWriteBytes

    public void realWriteBytes(byte[] buf,
                               int off,
                               int cnt)
                        throws java.io.IOException

  Sends the buffer data to the client output, checking the state of Response and calling the right interceptors.

  Specified by:
    `realWriteBytes` in interface `ByteChunk.ByteOutputChannel`
  Parameters:
    `buf` - Byte buffer to be written to the response
    `off` - Offset
    `cnt` - Length
  Throws:
    `java.io.IOException` - An underlying IOException occurred

### write

    public void write(byte[] b,
                      int off,
                      int len)
               throws java.io.IOException

  Throws:
    `java.io.IOException`

### writeByte

    public void writeByte(int b)
                   throws java.io.IOException

  Throws:
    `java.io.IOException`

### write

    public void write(int c)
               throws java.io.IOException

  Throws:
    `java.io.IOException`

### write

    public void write(char[] c)
               throws java.io.IOException

  Throws:
    `java.io.IOException`

### write

    public void write(char[] c,
                      int off,
                      int len)
               throws java.io.IOException

  Throws:
    `java.io.IOException`

### write

    public void write(java.lang.StringBuffer sb)
               throws java.io.IOException

  Throws:
    `java.io.IOException`

### write

    public void write(java.lang.String s,
                      int off,
                      int len)
               throws java.io.IOException

  Append a string to the buffer

  Throws:
    `java.io.IOException`

### write

    public void write(java.lang.String s)
               throws java.io.IOException

  Throws:
    `java.io.IOException`

### flushChars

    public void flushChars()
                    throws java.io.IOException

  Throws:
    `java.io.IOException`

### flushCharsNeeded

    public boolean flushCharsNeeded()

### setEncoding

    public void setEncoding(java.lang.String s)

### realWriteChars

    public void realWriteChars(char[] c,
                               int off,
                               int len)
                        throws java.io.IOException

  Description copied from interface: `CharChunk.CharOutputChannel`
  Send the bytes ( usually the internal conversion buffer ). Expect 8k output if the buffer is full.

  Specified by:
    `realWriteChars` in interface `CharChunk.CharOutputChannel`
  Throws:
    `java.io.IOException`

### checkConverter

    public void checkConverter()
                        throws java.io.IOException

  Throws:
    `java.io.IOException`

### setConverter

    protected void setConverter()
                         throws java.io.IOException

  Throws:
    `java.io.IOException`

### flushBytes

    public void flushBytes()
                    throws java.io.IOException

  Real write - this buffer will be sent to the client

  Throws:
    `java.io.IOException`

### getBytesWritten

    public int getBytesWritten()

### getCharsWritten

    public int getCharsWritten()

### getContentWritten

    public int getContentWritten()

### isNew

    public boolean isNew()

  True if this buffer hasn't been used ( since recycle() ) - i.e. no chars or bytes have been added to the buffer.

### setBufferSize

    public void setBufferSize(int size)

### reset

    public void reset()

### getBufferSize

    public int getBufferSize()

### log

    protected void log(java.lang.String s)

Copyright © 2000-2003 Apache Software Foundation. All Rights Reserved.