org.glassfish.grizzly.http.server.io
Class InputBuffer

java.lang.Object
  extended by org.glassfish.grizzly.http.server.io.InputBuffer

public class InputBuffer
extends java.lang.Object

Abstraction exposing both byte and character methods to read content from the HTTP messaging system in Grizzly.


Constructor Summary
InputBuffer()
           
 
Method Summary
 boolean append(Buffer buffer)
          Appends the specified Buffer to the internal composite Buffer.
 int available()
           
 int availableChar()
           
 void close()
           
 void fillFully(int length)
          Fill the buffer (blocking) up to the requested length.
 void finished()
          When invoked, this method will call ReadHandler.onAllDataRead() on the current ReadHandler (if any).
 Buffer getBuffer()
           
 ReadHandler getReadHandler()
           
 void initialize(HttpRequestPacket request, FilterChainContext ctx)
           Per-request initialization required for the InputBuffer to function properly.
 boolean isAsyncEnabled()
           
 boolean isFinished()
           
 void mark(int readAheadLimit)
           Only supported with binary data.
 boolean markSupported()
           Only supported with binary data.
 boolean notifyAvailable(ReadHandler handler)
          Installs a ReadHandler that will be notified when any data becomes available to read without blocking.
 boolean notifyAvailable(ReadHandler handler, int size)
          Installs a ReadHandler that will be notified when the specified amount of data is available to be read without blocking.
 void processingChars()
           This method should be called if the InputBuffer is being used in conjunction with a Reader implementation.
 int read(byte[] b, int off, int len)
           
 int read(char[] cbuf, int off, int len)
           
 int read(java.nio.CharBuffer target)
           
 int readByte()
          This method always blocks.
 int readChar()
           
 boolean ready()
           
 void recycle()
           Recycle this InputBuffer for reuse.
 void reset()
           Only supported with binary data.
 void setAsyncEnabled(boolean asyncEnabled)
          Sets the asynchronous processing state of this InputBuffer.
 long skip(long n, boolean block)
          Skips the specified number of bytes/characters.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

InputBuffer

public InputBuffer()
Method Detail

initialize

public void initialize(HttpRequestPacket request,
                       FilterChainContext ctx)

Per-request initialization required for the InputBuffer to function properly.

Parameters:
request - the current request
ctx - the FilterChainContext for the chain processing this request

recycle

public void recycle()

Recycle this InputBuffer for reuse.


processingChars

public void processingChars()

This method should be called if the InputBuffer is being used in conjunction with a Reader implementation. If this method is not called, any character-based methods called on this InputBuffer will throw a IllegalStateException.


readByte

public int readByte()
             throws java.io.IOException
This method always blocks.

Throws:
java.io.IOException
See Also:
InputStream.read()

read

public int read(byte[] b,
                int off,
                int len)
         throws java.io.IOException
Throws:
java.io.IOException
See Also:
InputStream.read(byte[], int, int)

available

public int available()
See Also:
InputStream.available()

getBuffer

public Buffer getBuffer()
Returns:
the underlying Buffer used to buffer incoming request data.

getReadHandler

public ReadHandler getReadHandler()
Returns:
the ReadHandler current in use, if any.

read

public int read(java.nio.CharBuffer target)
         throws java.io.IOException
Throws:
java.io.IOException
See Also:
Reader.read(java.nio.CharBuffer)

readChar

public int readChar()
             throws java.io.IOException
Throws:
java.io.IOException
See Also:
Reader.read()

read

public int read(char[] cbuf,
                int off,
                int len)
         throws java.io.IOException
Throws:
java.io.IOException
See Also:
Reader.read(char[], int, int)

ready

public boolean ready()
See Also:
Reader.ready()

fillFully

public void fillFully(int length)
               throws java.io.IOException
Fill the buffer (blocking) up to the requested length.

Parameters:
length -
Throws:
java.io.IOException

availableChar

public int availableChar()

mark

public void mark(int readAheadLimit)

Only supported with binary data.

See Also:
InputStream.mark(int)

markSupported

public boolean markSupported()

Only supported with binary data.

See Also:
InputStream.markSupported()

reset

public void reset()
           throws java.io.IOException

Only supported with binary data.

Throws:
java.io.IOException
See Also:
InputStream.reset()

close

public void close()
           throws java.io.IOException
Throws:
java.io.IOException
See Also:
Closeable.close()

skip

public long skip(long n,
                 boolean block)
          throws java.io.IOException
Skips the specified number of bytes/characters.

Throws:
java.lang.IllegalStateException - if the stream that is using this InputBuffer is configured for asynchronous communication and the number of bytes/characters being skipped exceeds the number of bytes available in the buffer.
java.io.IOException
See Also:
InputStream.skip(long), Reader.skip(long)

finished

public void finished()
              throws java.io.IOException
When invoked, this method will call ReadHandler.onAllDataRead() on the current ReadHandler (if any). This method shouldn't be invoked by developers directly.

Throws:
java.io.IOException

isFinished

public boolean isFinished()
Returns:
true if all request data has been read, otherwise returns false.

notifyAvailable

public boolean notifyAvailable(ReadHandler handler)
Installs a ReadHandler that will be notified when any data becomes available to read without blocking.

Parameters:
handler - the ReadHandler to invoke.
Returns:
true if the specified handler has been accepted and will be notified as data becomes available to write, otherwise returns false which means data is available to be read without blocking.

notifyAvailable

public boolean notifyAvailable(ReadHandler handler,
                               int size)
Installs a ReadHandler that will be notified when the specified amount of data is available to be read without blocking.

Parameters:
handler - the ReadHandler to invoke.
size - the minimum number of bytes that must be available before the ReadHandler is notified.
Returns:
true if the specified handler has been accepted and will be notified as data becomes available to write, otherwise returns false which means data is available to be read without blocking.

append

public boolean append(Buffer buffer)
               throws java.io.IOException
Appends the specified Buffer to the internal composite Buffer.

Parameters:
buffer - the Buffer to append
Returns:
true if ReadHandler.onDataAvailable() callback was invoked, otherwise returns false.
Throws:
java.io.IOException - if an error occurs appending the Buffer

isAsyncEnabled

public boolean isAsyncEnabled()
Returns:
if this buffer is being used to process asynchronous data.

setAsyncEnabled

public void setAsyncEnabled(boolean asyncEnabled)
Sets the asynchronous processing state of this InputBuffer.

Parameters:
asyncEnabled - true if this InputBuffer is to be used to process asynchronous request data.


Copyright © 2011 Oracle Corpration. All Rights Reserved.