Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   *  Copyright (c) xlightweb.org, 2008 - 2010. All rights reserved.
   *
   *  This library is free software; you can redistribute it and/or
   *  modify it under the terms of the GNU Lesser General Public
   *  License as published by the Free Software Foundation; either
   *  version 2.1 of the License, or (at your option) any later version.
   *
   *  This library is distributed in the hope that it will be useful,
  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  *  Lesser General Public License for more details.
  *
  *  You should have received a copy of the GNU Lesser General Public
  *  License along with this library; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
  * Please refer to the LGPL license at: http://www.gnu.org/copyleft/lesser.txt
  * The latest copy of this software may be found on http://www.xlightweb.org/
  */
 package org.xlightweb;
 
 
 
 import java.util.Map;
 

Author(s):
grro@xlightweb.org
 
     
     @SuppressWarnings("unchecked")
     private static final Map<ClassMessageCompleteHandlerInfocompleteHandlerInfoCache = ConnectionUtils.newMapCache(25);
     
     private final WebSocketConnection con;
     private final MessageCompleteHandlerInfo handlerInfo;
     
     
         this. = con;
         this. = handler;
         this. = getMessageCompleteHandlerInfo(handler);
     }
     
     
     public void onWritten(final int writtenthrows IOException {
         
         if ( != null) {
             Runnable task = new Runnable() {
                 public void run() {
                     .onWritten(written);
                 }
             };
             
             if (.isOnWrittenMultithreaded()) {
                 .processMultithreaded(task);
             } else {
                 .processNonthreaded(task);
             }
             .processNonthreaded(task);
         }
     }
 
     
     public void onException(final IOException ioe) {
         
         if ( != null) {
             Runnable task = new Runnable() {
                 public void run() {
                     .onException(ioe);
                 }
             };
             
             if (.isOnErrorMultithreaded()) {
                 .processMultithreaded(task);
             } else {
                 .processNonthreaded(task);
             }
             .processNonthreaded(task);
         }
     }
     
 
     
     
         if (handler == null) {
             return ;
         }
 
        if (info == null) {
            info = new MessageCompleteHandlerInfo(handler.getClass());
            .put(handler.getClass(), info);
        }
        return info;
    }
    
    
    
    static final class MessageCompleteHandlerInfo  {
        
        private final boolean isOnWrittenMultithreaded;
        private final boolean isOnErrorMultithreaded;
        @SuppressWarnings("unchecked")
        MessageCompleteHandlerInfo(Class clazz) {
            
            if ((clazz != null)) {
                boolean isMultiThreaded = HttpUtils.isHandlerMultithreaded(clazztrue);
                 = HttpUtils.isMethodMultithreaded(clazz"onWritten"isMultiThreadedint.class);
                 = HttpUtils.isMethodMultithreaded(clazz"onException"isMultiThreadedIOException.class);
                
            } else { 
                 = false;
                 = false;
            }
        }
        public boolean isOnWrittenMultithreaded() {
            return ;
        }
        
        public boolean isOnErrorMultithreaded() {
            return ;
        }
    }
New to GrepCode? Check out our FAQ X