Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   *
   * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
   *
   * The contents of this file are subject to the terms of either the GNU
   * General Public License Version 2 only ("GPL") or the Common Development
   * and Distribution License("CDDL") (collectively, the "License").  You
   * may not use this file except in compliance with the License.  You can
  * obtain a copy of the License at
  * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
  * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
  * file and include the License file at packager/legal/LICENSE.txt.
  *
  * GPL Classpath Exception:
  * Oracle designates this particular file as subject to the "Classpath"
  * exception as provided by Oracle in the GPL Version 2 section of the License
  * file that accompanied this code.
  *
  * Modifications:
  * If applicable, add the following below the License Header, with the fields
  * enclosed by brackets [] replaced by your own identifying information:
  * "Portions Copyright [year] [name of copyright owner]"
  *
  * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
  * Version 2] license."  If you don't indicate a single choice of license, a
  * recipient has the option to distribute your version of this file under
  * either the CDDL, the GPL Version 2 or to extend the choice of license to
  * its licensees as provided above.  However, if you add GPL Version 2 code
  * and therefore, elected the GPL Version 2 license, then the option applies
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
 
 package com.sun.enterprise.web.connector.grizzly;
 
This interface defines the methods an instance of a ReadTask will invoke. The ReadTask will use an implementation of this interface tp predict if the NIO code>ByteBuffer has been fully read and can be processed. ReadTask will invoke the method in the following order: (a) allocate(...) (b) preParse(...) (c) parse(...) (d) contentLength() AND headerLength(); (d) postParse(...) The algorithm will stop once (c) return true

Author(s):
Jean-Francois Arcand
 
 public interface StreamAlgorithm{
    
    
    
Return the stream content-length. If the content-length wasn't parsed, return -1.
 
     public int contentLength();
    
    
    
Return the stream header length. The header length is the length between the start of the stream and the first occurance of character '\r\n' .
 
     public int headerLength();
    
    
    
Allocate a ByteBuffer

Parameters:
useDirect allocate a direct ByteBuffer.
useView allocate a view ByteBuffer.
size the size of the newly created ByteBuffer.
Returns:
a new ByteBuffer
 
     public ByteBuffer allocate(boolean useDirectboolean useViewint size);
    
    
    
Before parsing the bytes, initialize and prepare the algorithm.

Parameters:
byteBuffer the ByteBuffer used by this algorithm
Returns:
ByteBuffer used by this algorithm
 
     public ByteBuffer preParse(ByteBuffer byteBuffer);
    
    
    
Parse the ByteBuffer and try to determine if the bytes stream has been fully read from the SocketChannel.

Returns:
true if the algorithm determines the end of the stream.
Paran:
byteBuffer the bytes read.
    public boolean parse(ByteBuffer byteBuffer);
    
    
    
After parsing the bytes, post process the ByteBuffer

Parameters:
byteBuffer the ByteBuffer used by this algorithm
Returns:
ByteBuffer used by this algorithm
    public ByteBuffer postParse(ByteBuffer byteBuffer);  
    
    
    
Recycle the algorithm.
    public void recycle();
    
    
    
Rollback the ByteBuffer to its previous state in case an error as occured.
    public ByteBuffer rollbackParseState(ByteBuffer byteBuffer);  
    
    
    
The Handler associated with this algorithm.
    public Handler getHandler();

    
    
Set the SocketChannel used by this algorithm
    public void setSocketChannel(SocketChannel socketChannel);
    
    
    
Set the port this algorithm is used.
    public void setPort(int port);
    
    
    
Return the port
    public int getPort();
    
    
    
Return the class responsible for handling OP_READ.
    public Class getReadTask(SelectorThread selectorThread);
New to GrepCode? Check out our FAQ X