com.sun.grizzly.http.algorithms
Class SeekHeaderAlgorithm

java.lang.Object
  extended by com.sun.grizzly.http.algorithms.StreamAlgorithmBase
      extended by com.sun.grizzly.http.algorithms.ContentLengthAlgorithm
          extended by com.sun.grizzly.http.algorithms.SeekHeaderAlgorithm
All Implemented Interfaces:
StreamAlgorithm

public final class SeekHeaderAlgorithm
extends ContentLengthAlgorithm

Predict if the NIO channel has been fully read or not. This lagorithm will first search for the content-length header, and use that value to determine if the bytes has been fully read or not. If the content-length isn't included, it will search for the end of the HTTP stream, which is a '\r\n' without buffering the body.

Author:
Jean-Francois Arcand

Nested Class Summary
 
Nested classes/interfaces inherited from class com.sun.grizzly.http.algorithms.StreamAlgorithmBase
StreamAlgorithmBase.DummyHandler
 
Field Summary
 
Fields inherited from class com.sun.grizzly.http.algorithms.ContentLengthAlgorithm
ascbuf, CL_HEADER, isFound, lastValid, lengthReq, pos, POST_METHOD, PUT_METHOD, requestLineParsed, startReq
 
Fields inherited from class com.sun.grizzly.http.algorithms.StreamAlgorithmBase
contentLength, curLimit, curPosition, handler, headerLength, lastStatePosition, primaryByteBuffer, socketChannel, state, useByteBufferView, useDirectByteBuffer
 
Constructor Summary
SeekHeaderAlgorithm()
           
 
Method Summary
 boolean parse(ByteBuffer byteBuffer)
          Parse the ByteBuffer and try to determine if the bytes stream has been fully read from the SocketChannel.
 
Methods inherited from class com.sun.grizzly.http.algorithms.ContentLengthAlgorithm
findBytes, getHandler, parseHeader, parseRequestLine, recycle
 
Methods inherited from class com.sun.grizzly.http.algorithms.StreamAlgorithmBase
allocate, contentLength, dump, getPort, headerLength, postParse, preParse, rollbackParseState, setPort, setSocketChannel
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SeekHeaderAlgorithm

public SeekHeaderAlgorithm()
Method Detail

parse

public boolean parse(ByteBuffer byteBuffer)
Parse the ByteBuffer and try to determine if the bytes stream has been fully read from the SocketChannel. Drain the SocketChannel and determine if the request bytes has been fully read. For POST method, parse the bytes and seek for the content-type header to determine the length of the request bytes.

Specified by:
parse in interface StreamAlgorithm
Overrides:
parse in class ContentLengthAlgorithm
Parameters:
byteBuffer - the bytes read.
Returns:
true if we need to call back the SelectorThread This occurs when the stream doesn't contains all the request bytes. false if the stream contains all request bytes.


Copyright © 2010 SUN Microsystems. All Rights Reserved.