com.sun.enterprise.web.connector.grizzly.algorithms
Class StateMachineAlgorithm

java.lang.Object
  extended by com.sun.enterprise.web.connector.grizzly.algorithms.StreamAlgorithmBase
      extended by com.sun.enterprise.web.connector.grizzly.algorithms.StateMachineAlgorithm
All Implemented Interfaces:
StreamAlgorithm

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.enterprise.web.connector.grizzly.algorithms.StreamAlgorithmBase
StreamAlgorithmBase.DummyHandler
 
Field Summary
 
Fields inherited from class com.sun.enterprise.web.connector.grizzly.algorithms.StreamAlgorithmBase
contentLength, curLimit, curPosition, embeddedInGlassFish, handler, headerLength, lastStatePosition, primaryByteBuffer, socketChannel, state, useByteBufferView, useDirectByteBuffer
 
Constructor Summary
StateMachineAlgorithm()
           
 
Method Summary
 Handler getHandler()
          Return the Handler used by this algorithm.
 Class getReadTask(SelectorThread selectorThread)
          Return the full name of the class responsible for handling OP_READ.
 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.enterprise.web.connector.grizzly.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

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
Specified by:
parse in class StreamAlgorithmBase
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 Handler getHandler()
Return the Handler used by this algorithm.


recycle

public void recycle()
Recycle this object.

Specified by:
recycle in interface StreamAlgorithm
Overrides:
recycle in class StreamAlgorithmBase

getReadTask

public Class getReadTask(SelectorThread selectorThread)
Return the full name of the class responsible for handling OP_READ.

Specified by:
getReadTask in interface StreamAlgorithm
Overrides:
getReadTask in class StreamAlgorithmBase


Copyright © 2005-2015 Oracle Corporation. All Rights Reserved.