Package org.apache.catalina.connector
Class OutputBuffer
- java.lang.Object
-
- java.io.Writer
-
- org.apache.catalina.connector.OutputBuffer
-
- All Implemented Interfaces:
java.io.Closeable
,java.io.Flushable
,java.lang.Appendable
,java.lang.AutoCloseable
public class OutputBuffer extends java.io.Writer
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 responsibility).- Author:
- Costin Manolache, Remy Maucherat
-
-
Field Summary
Fields Modifier and Type Field Description protected C2BConverter
conv
Current char to byte converter.static int
DEFAULT_BUFFER_SIZE
-
Constructor Summary
Constructors Constructor Description OutputBuffer(int size)
Create the buffer with the specified initial size.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
append(byte[] src, int off, int len)
Add data to the buffer.void
append(char[] src, int off, int len)
Add data to the buffer.void
append(java.nio.ByteBuffer from)
void
checkConverter()
void
checkRegisterForWrite()
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.int
getBufferSize()
long
getContentWritten()
boolean
isBlocking()
boolean
isClosed()
Is the response output closed ?boolean
isNew()
Has this buffer been used at all?boolean
isReady()
boolean
isSuspended()
Is the response output suspended ?void
realWriteBytes(java.nio.ByteBuffer buf)
Sends the buffer data to the client output, checking the state of Response and calling the right interceptors.void
realWriteChars(java.nio.CharBuffer from)
Convert the chars to bytes, then send the data to the client.void
recycle()
Recycle the output buffer.void
reset()
void
reset(boolean resetWriterStreamFlags)
void
setBufferSize(int size)
void
setResponse(Response coyoteResponse)
Associated Coyote response.void
setSuspended(boolean suspended)
Set the suspended flag.void
setWriteListener(WriteListener listener)
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.String s, int off, int len)
Append a string to the buffervoid
write(java.nio.ByteBuffer from)
void
writeByte(int b)
-
-
-
Field Detail
-
DEFAULT_BUFFER_SIZE
public static final int DEFAULT_BUFFER_SIZE
- See Also:
- Constant Field Values
-
conv
protected C2BConverter conv
Current char to byte converter.
-
-
Method Detail
-
setResponse
public void setResponse(Response coyoteResponse)
Associated Coyote response.- Parameters:
coyoteResponse
- 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
-
isClosed
public boolean isClosed()
Is the response output closed ?- Returns:
- closed 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.- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Specified by:
close
in classjava.io.Writer
- Throws:
java.io.IOException
- An underlying IOException occurred
-
flush
public void flush() throws java.io.IOException
Flush bytes or chars contained in the buffer.- Specified by:
flush
in interfacejava.io.Flushable
- Specified by:
flush
in classjava.io.Writer
- 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.- Parameters:
realFlush
-true
if this should also cause a real network flush- Throws:
java.io.IOException
- An underlying IOException occurred
-
realWriteBytes
public void realWriteBytes(java.nio.ByteBuffer buf) throws java.io.IOException
Sends the buffer data to the client output, checking the state of Response and calling the right interceptors.- Parameters:
buf
- the ByteBuffer to be written to the response- 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
-
write
public void write(java.nio.ByteBuffer from) throws java.io.IOException
- Throws:
java.io.IOException
-
writeByte
public void writeByte(int b) throws java.io.IOException
- Throws:
java.io.IOException
-
realWriteChars
public void realWriteChars(java.nio.CharBuffer from) throws java.io.IOException
Convert the chars to bytes, then send the data to the client.- Parameters:
from
- Char buffer to be written to the response- Throws:
java.io.IOException
- An underlying IOException occurred
-
write
public void write(int c) throws java.io.IOException
- Overrides:
write
in classjava.io.Writer
- Throws:
java.io.IOException
-
write
public void write(char[] c) throws java.io.IOException
- Overrides:
write
in classjava.io.Writer
- Throws:
java.io.IOException
-
write
public void write(char[] c, int off, int len) throws java.io.IOException
- Specified by:
write
in classjava.io.Writer
- 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- Overrides:
write
in classjava.io.Writer
- Throws:
java.io.IOException
-
write
public void write(java.lang.String s) throws java.io.IOException
- Overrides:
write
in classjava.io.Writer
- Throws:
java.io.IOException
-
checkConverter
public void checkConverter() throws java.io.IOException
- Throws:
java.io.IOException
-
getContentWritten
public long getContentWritten()
-
isNew
public boolean isNew()
Has this buffer been used at all?- Returns:
- true if no chars or bytes have been added to the buffer since the
last call to
recycle()
-
setBufferSize
public void setBufferSize(int size)
-
reset
public void reset()
-
reset
public void reset(boolean resetWriterStreamFlags)
-
getBufferSize
public int getBufferSize()
-
isReady
public boolean isReady()
-
setWriteListener
public void setWriteListener(WriteListener listener)
-
isBlocking
public boolean isBlocking()
-
checkRegisterForWrite
public void checkRegisterForWrite()
-
append
public void append(byte[] src, int off, int len) throws java.io.IOException
Add data to the buffer.- Parameters:
src
- Bytes arrayoff
- Offsetlen
- Length- Throws:
java.io.IOException
- Writing overflow data to the output channel failed
-
append
public void append(char[] src, int off, int len) throws java.io.IOException
Add data to the buffer.- Parameters:
src
- Char arrayoff
- Offsetlen
- Length- Throws:
java.io.IOException
- Writing overflow data to the output channel failed
-
append
public void append(java.nio.ByteBuffer from) throws java.io.IOException
- Throws:
java.io.IOException
-
-