com.sun.grizzly.tcp.http11
Class GrizzlyOutputBuffer

java.lang.Object
  extended by java.io.Writer
      extended by com.sun.grizzly.tcp.http11.GrizzlyOutputBuffer
All Implemented Interfaces:
ByteChunk.ByteOutputChannel, CharChunk.CharOutputChannel, Closeable, Flushable, Appendable

public class GrizzlyOutputBuffer
extends 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 String DEFAULT_ENCODING
           
protected  HashMap encoders
          List of encoders.
 int INITIAL_STATE
           
 
Fields inherited from class java.io.Writer
lock
 
Constructor Summary
GrizzlyOutputBuffer()
          Default constructor.
GrizzlyOutputBuffer(boolean chunkingDisabled)
           
GrizzlyOutputBuffer(int size)
          Alternate constructor which allows specifying the initial buffer size.
GrizzlyOutputBuffer(int size, boolean chunkingDisabled)
           
 
Method Summary
 void checkConverter()
           
 void close()
          Close the output buffer.
protected  void doFlush(boolean realFlush)
          Flush bytes or chars contained in the buffer.
 void enableCache(boolean enableCache)
          Enable resource caching.
 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()
           
 ByteBuffer getCachedByteBuffer()
          Return a copy of the cached resources.
 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 ?
 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(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(String s)
           
 void write(StringBuffer sb)
           
 void write(String s, int off, int len)
          Append a string to the buffer
 void writeByte(int b)
           
 
Methods inherited from class java.io.Writer
append, append, append
 
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 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 HashMap encoders
List of encoders.


conv

protected C2BConverter conv
Current char to byte converter.

Constructor Detail

GrizzlyOutputBuffer

public GrizzlyOutputBuffer()
Default constructor. Allocate the buffer with the default buffer size.


GrizzlyOutputBuffer

public GrizzlyOutputBuffer(boolean chunkingDisabled)

GrizzlyOutputBuffer

public GrizzlyOutputBuffer(int size)
Alternate constructor which allows specifying the initial buffer size.

Parameters:
size - Buffer size to use

GrizzlyOutputBuffer

public GrizzlyOutputBuffer(int size,
                           boolean chunkingDisabled)
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 IOException
Close the output buffer. This tries to calculate the response size if the response has not been committed yet.

Specified by:
close in interface Closeable
Specified by:
close in class Writer
Throws:
IOException - An underlying IOException occurred

flush

public void flush()
           throws IOException
Flush bytes or chars contained in the buffer.

Specified by:
flush in interface Flushable
Specified by:
flush in class Writer
Throws:
IOException - An underlying IOException occurred

doFlush

protected void doFlush(boolean realFlush)
                throws IOException
Flush bytes or chars contained in the buffer.

Throws:
IOException - An underlying IOException occurred

realWriteBytes

public void realWriteBytes(byte[] buf,
                           int off,
                           int cnt)
                    throws 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:
IOException - An underlying IOException occurred

write

public void write(byte[] b,
                  int off,
                  int len)
           throws IOException
Throws:
IOException

writeByte

public void writeByte(int b)
               throws IOException
Throws:
IOException

write

public void write(int c)
           throws IOException
Overrides:
write in class Writer
Throws:
IOException

write

public void write(char[] c)
           throws IOException
Overrides:
write in class Writer
Throws:
IOException

write

public void write(char[] c,
                  int off,
                  int len)
           throws IOException
Specified by:
write in class Writer
Throws:
IOException

write

public void write(StringBuffer sb)
           throws IOException
Throws:
IOException

write

public void write(String s,
                  int off,
                  int len)
           throws IOException
Append a string to the buffer

Overrides:
write in class Writer
Throws:
IOException

write

public void write(String s)
           throws IOException
Overrides:
write in class Writer
Throws:
IOException

flushChars

public void flushChars()
                throws IOException
Throws:
IOException

flushCharsNeeded

public boolean flushCharsNeeded()

setEncoding

public void setEncoding(String s)

realWriteChars

public void realWriteChars(char[] c,
                           int off,
                           int len)
                    throws 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:
IOException

checkConverter

public void checkConverter()
                    throws IOException
Throws:
IOException

setConverter

protected void setConverter()
                     throws IOException
Throws:
IOException

flushBytes

public void flushBytes()
                throws IOException
Real write - this buffer will be sent to the client

Throws:
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()

enableCache

public void enableCache(boolean enableCache)
Enable resource caching.


getCachedByteBuffer

public ByteBuffer getCachedByteBuffer()
Return a copy of the cached resources.



Copyright © 2008 SUN Microsystems. All Rights Reserved.