com.sun.grizzly.http.algorithms
Class StateMachineAlgorithm

java.lang.Object
  extended by com.sun.grizzly.http.algorithms.StreamAlgorithmBase
      extended by com.sun.grizzly.http.algorithms.StateMachineAlgorithm
All Implemented Interfaces:
StreamAlgorithm<SocketChannel>

public final class StateMachineAlgorithm
extends StreamAlgorithmBase

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'

Author:
Scott Oaks., 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.StreamAlgorithmBase
contentLength, curLimit, curPosition, handler, headerLength, lastStatePosition, primaryByteBuffer, socketChannel, state, useByteBufferView, useDirectByteBuffer
 
Constructor Summary
StateMachineAlgorithm()
           
 
Method Summary
 Interceptor getHandler()
          Return the Interceptor used by this algorithm.
 boolean parse(ByteBuffer byteBuffer)
          Parse the ByteBuffer and try to determine if the bytes stream has been fully read from the SocketChannel.
 void recycle()
          Recycle this object.
 
Methods inherited from class com.sun.grizzly.http.algorithms.StreamAlgorithmBase
allocate, contentLength, dump, getPort, headerLength, postParse, preParse, rollbackParseState, setChannel, setPort
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StateMachineAlgorithm

public StateMachineAlgorithm()
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<SocketChannel>
Specified by:
parse in class StreamAlgorithmBase
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.

getHandler

public Interceptor getHandler()
Return the Interceptor used by this algorithm.

Returns:
Interceptor

recycle

public void recycle()
Recycle this object.

Specified by:
recycle in interface StreamAlgorithm<SocketChannel>
Overrides:
recycle in class StreamAlgorithmBase


Copyright © 2012 Oracle Corporation. All Rights Reserved.