Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * 
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   * 
   * Copyright 2007-2008 Sun Microsystems, Inc. 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.html
  * or glassfish/bootstrap/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 glassfish/bootstrap/legal/LICENSE.txt.
  * Sun designates this particular file as subject to the "Classpath" exception
  * as provided by Sun in the GPL Version 2 section of the License file that
  * accompanied this code.  If applicable, add the following below the License
  * Header, with the fields enclosed by brackets [] replaced by your own
  * identifying information: "Portions Copyrighted [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.grizzly.aio.http;
 
 
SelectorThread implementation based on AIO. Documentation to comes.

Author(s):
Jean-Francois Arcand
 
 public class AsyncAcceptorThread extends SelectorThread {
 
 
    // -------------------------------------------------------------- Init // 
 
    
Init the ExecutorServices used by the com.sun.grizzly.util.WorkerThreads.
 
     @Override
     public void initThreadPool(){
         .put(,this);
          
         System.setProperty("java.nio.channels.DefaultThreadPool.threadFactory"
                 ,com.sun.grizzly.aio.http.WorkerThreadFactory.class.getName());
         .info("Swithching Grizzly Http Thread Pool to: " 
                 + com.sun.grizzly.aio.http.WorkerThreadFactory.class.getName());      
         
         StatsThreadPool statsThreadPool = new StatsThreadPool(){
 
             @Override
             public synchronized void execute(Runnable runnable) {
             }
 
             @Override
             public void stop() {
             }
         };
         statsThreadPool.setMaximumPoolSize(
                 .);
 
         setThreadPool(statsThreadPool);
     }
    
    
Initialize the Grizzly Framework classes.
 
    @Override
    protected void initController(){
        if ( == null){
             = new AIOController();
        }
        
        // Set the logger of the utils package to the same as this class.       
        LoggerUtils.setLogger();
        // Set the controller logger
        AIOController.setLogger();
        TCPAIOHandler aioHandler = new TCPAIOHandler();
        aioHandler.setPort();
        ((AIOController)).addAIOHandler(aioHandler);
        
        final DefaultProtocolChain protocolChain = new DefaultProtocolChain(){
            @Override
            public void execute(Context ctxthrows Exception {
                if () {
                    ByteBuffer byteBuffer =
                            (ByteBuffer)ctx.getAttribute
                            (.);
                    // Switch ByteBuffer
                    if (byteBuffer != null){
                        ((WorkerThread)Thread.currentThread())
                            .setByteBuffer(byteBuffer);
                    }
                    if (.size() != 0){
                        int currentPosition = super.executeProtocolFilter(ctx);
                        super.postExecuteProtocolFilter(currentPositionctx);
                    }
                } else {
                    super.execute(ctx);
                }
            }              
        };        
        configureFilters(protocolChain);
         
        DefaultProtocolChainInstanceHandler instanceHandler 
                = new DefaultProtocolChainInstanceHandler(){        

            
Always return instance of ProtocolChain.
            @Override
            public ProtocolChain poll(){
                return protocolChain;
            }

            
Pool an instance of ProtocolChain.
            @Override
            public boolean offer(ProtocolChain instance){
                return true;
            }
        };
        .setProtocolChainInstanceHandler(instanceHandler);
    }
    
    
    
Create AIOProcessorTask objects and configure it to be ready to proceed request.
    @Override
    protected ProcessorTask newProcessorTask(boolean initialize){                                                      
        DefaultProcessorTask task = 
                new AIOProcessorTask(initialize);
        return configureProcessorTask(task);       
    }


    
Initialize the com.sun.grizzly.http.FileCacheFactory associated with this instance
    @Override
    protected void initFileCacheFactory(){
        if ( != nullreturn;
         = FileCacheFactory.getFactory(AIOFileCache.class);
        FileCacheFactory.setIsEnabled();
    }

    
    
Adds and configures com.sun.grizzly.ProtocolChain's filters

Parameters:
<code>com.sun.grizzly.ProtocolChain to configure
    @Override
    protected void configureFilters(ProtocolChain protocolChain) {
        if ( != null) {
            protocolChain.addFilter();
        } else {
            AIOReadFilter readFilter = new AIOReadFilter();
            protocolChain.addFilter(readFilter);
        }
        protocolChain.addFilter(createHttpParserFilter());
    }   

    
    
Create HTTP parser com.sun.grizzly.ProtocolFilter

Returns:
HTTP parser com.sun.grizzly.ProtocolFilter
    @Override
    protected ProtocolFilter createHttpParserFilter() {
        return new AIOHttpParser();
    }
    
    
    
New to GrepCode? Check out our FAQ X