| java.lang.Object java.io.OutputStream org.vfny.geoserver.util.PartialBufferedOutputStream2
PartialBufferedOutputStream2 | public class PartialBufferedOutputStream2 extends OutputStream (Code) | | PartialBufferedOutputStream Oct 19, 2005
Purpose:
I have modelled this class after the BufferedOutputStream. Several methods
are synchronized as a result. The interior of this class uses a
ByteArrayOutputStream when it starts and then a BufferedOutputStream. This
is essentially a decorator. This class uses a temporary to-memory
OutputStream for initial bufferring. This OutputStream is a
ByteArrayOutputStream. Once a pre-defined BUFFER_SIZE has been reached, the
output that is stored in the ByteArrayOutputStream is output to the real
OutputStream to the response. Further data is then written to that response
OutputStream. For the first run of this, we will write to memory for the
buffered part. Writing to disk is another option. NOTE: If we switch to
writing out to disk, we will have to clean up our temporary files with
abort(). WARNING: IF you abuse the size of the buffer, you may leak memory
if this OutputStream is not terminated. The ByteArrayOutputStream will hold
onto its allocated memory even after you call reset() on it. So if you put
in 60MB of buffer space, it will stay there until the object is no longer
referenced and the garbage collector decides to pick it up. A solution to
this would be to use a FileOutputStream instead of the
ByteArrayOutputStream. CONTRACT: -close() will NOT flush remaining bytes to
the output stream, as per the contract with OutputStream. Close will remove
any references to OutputStreams and its HttpServletResponse. -fush() will
NOT flush if the buffer is not full. -abort() will succeed if the buffer is
not full yet. If the buffer has been filled and the information has been
written out to response's OutputStream, the abort reports as having failed.
The point of this PartialBufferedOutputStream is to allow an abort before
the information has been written out to the real OutputStream. When abort
is called the references to any OutputStreams and the HttpServletResponse
are removed.
author: Brent Owens (The Open Planning Project) |
Method Summary | |
public boolean | abort() abort
Description:
Abort is called when something bad has happened and we want to get out
of writing out to the real stream. | public int | bufferCapacity() bufferCapacity
Description:
This will return the max capacity of the buffer in kilobytes. | public int | bufferSize() bufferSize
Description:
This will return the size of the buffer, in bytes. | public void | close() Closes the stream. | public synchronized void | flush() | public synchronized void | forceFlush() | public synchronized void | write(int b) | public void | write(byte[] b) | public void | write(byte[] b, int off, int len) |
DEFAULT_BUFFER_SIZE | final public static int DEFAULT_BUFFER_SIZE(Code) | | |
PartialBufferedOutputStream2 | public PartialBufferedOutputStream2(HttpServletResponse response) throws IOException(Code) | | Constructor Defaults buffer size to 50KB
Parameters: response - |
PartialBufferedOutputStream2 | public PartialBufferedOutputStream2(HttpServletResponse response, int kilobytes) throws IOException(Code) | | Parameters: response - the response with its output stream to write to once the buffer is full Parameters: kilobytes - size, in kilobytes, of the buffer |
abort | public boolean abort() throws IOException(Code) | | abort
Description:
Abort is called when something bad has happened and we want to get out
of writing out to the real stream. This is why we have a buffer. Abort
will succeed if the buffer is not full yet. If that is true, then the
buffer is cleared and closed. It does NOT close the response's
OutputStream
DOCUMENT ME! throws: IOException - |
bufferCapacity | public int bufferCapacity()(Code) | | bufferCapacity
Description:
This will return the max capacity of the buffer in kilobytes.
the capacity of the buffer in kilobytes |
bufferSize | public int bufferSize()(Code) | | bufferSize
Description:
This will return the size of the buffer, in bytes.
the size of the buffer in bytes |
close | public void close() throws IOException(Code) | | Closes the stream. If we're still working against the in memory buffer that
will be written out before close occurs
|
|
|