|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object ikrs.httpd.resource.AbstractResource ikrs.httpd.resource.BufferedResource
public class BufferedResource
There are cases when it is not predictable how many bytes a data source will produce until the input stream has reached EOF. But for HTTP resources it is not acceptable to return an unprecise or aproximate value for Resource.getLength() because this value will be stored in the HTTP resonse's header data for the 'Content-Length' field (as soon as the data output started the header field was sent and cannot be modified any more)! For those unpredictable cases we need buffered resources that load the _complete_ data into an internal buffer to gain the exact number of bytes. Handle with care! Some underlying resources might hold a large number of bytes which might cause out-of-memory errors or stack overflows when this BufferedResource tries to allocate enought memory to store the data.
Constructor Summary | |
---|---|
BufferedResource(HTTPHandler handler,
CustomLogger logger,
java.io.InputStream in,
boolean useFairLocks)
Create a new BufferedResource. |
Method Summary | |
---|---|
boolean |
close()
Closes this resource. |
java.io.InputStream |
getInputStream()
Get the input stream from this resource. |
long |
getLength()
This method returns the *actual* length of the underlying resource. |
java.io.OutputStream |
getOutputStream()
Get the output stream to this resource. |
boolean |
isOpen()
This method determines if this resource was alerady opened or not. |
boolean |
isReadOnly()
This method returns true if the underlying resource is read-only (in general). |
void |
open(boolean readOnly)
This method opens the underlying resource. |
Methods inherited from class ikrs.httpd.resource.AbstractResource |
---|
getHTTPHandler, getHypertextAccessFile, getLogger, getMetaData, getReadLock, getWriteLock, setHypertextAccessFile |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public BufferedResource(HTTPHandler handler, CustomLogger logger, java.io.InputStream in, boolean useFairLocks) throws java.lang.NullPointerException
handler
- The HTTPHandler (may be null if not available).logger
- A custom logger to write log messages to (must not be null).in
- The input stream to read the data for buffering from.useFairLocks
- If set to true the class will use fair read locks (writing isn't
possible at all with this class).
java.lang.NullPointerException
- If logger or the input stream is null.Method Detail |
---|
public void open(boolean readOnly) throws ReadOnlyException, java.io.IOException
open
in interface Resource
open
in class AbstractResource
readOnly
- if set to true, the resource will be opened in read-only mode.
ReadOnlyException
- If the underlying resource is read-only in general.
java.io.IOException
- If any other IO error occurs.isReadOnly()
public boolean isOpen() throws java.io.IOException
isOpen
in interface Resource
isOpen
in class AbstractResource
java.io.IOException
- If any IO error occurs.public boolean isReadOnly() throws java.io.IOException
isReadOnly
in interface Resource
isReadOnly
in class AbstractResource
java.io.IOException
- If any IO error occurs.public long getLength() throws java.io.IOException
getLength
in interface Resource
getLength
in class AbstractResource
java.io.IOException
- If any IO error occurs.public java.io.OutputStream getOutputStream() throws ReadOnlyException, java.io.IOException
getOutputStream
in interface Resource
getOutputStream
in class AbstractResource
ReadOnlyException
- If this resource was opened with the read-only flag set.
java.io.IOException
- If any other IO error occurs.public java.io.InputStream getInputStream() throws java.io.IOException
getInputStream
in interface Resource
getInputStream
in class AbstractResource
java.io.IOException
- If any IO error occurs.public boolean close() throws java.io.IOException
close
in interface Resource
close
in class AbstractResource
java.io.IOException
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |