Package org.quickserver.util.pool

Source Code of org.quickserver.util.pool.ClientHandlerObjectFactory

/*
* This file is part of the QuickServer library
* Copyright (C) QuickServer.org
*
* Use, modification, copying and distribution of this software is subject to
* the terms and conditions of the GNU Lesser General Public License.
* You should have received a copy of the GNU LGP License along with this
* library; if not, you can download a copy from <http://www.quickserver.org/>.
*
* For questions, suggestions, bug-reports, enhancement-requests etc.
* visit http://www.quickserver.org
*
*/

package org.quickserver.util.pool;

import org.quickserver.net.server.ClientHandler;
import org.quickserver.net.server.impl.*;
import org.apache.commons.pool.BasePoolableObjectFactory;

/**
* A factory for creating {@link org.quickserver.net.server.ClientHandler}
* instances.
* @author Akshathkumar Shetty
* @since 1.3
*/
public class ClientHandlerObjectFactory extends BasePoolableObjectFactory {
  private static int instanceCount = 0;
  private int id = -1;
  private boolean blocking = true;

  public ClientHandlerObjectFactory(boolean blocking) {
    super();
    id = ++instanceCount;
    this.blocking = blocking;
  }

  //Creates an instance that can be returned by the pool.
  public Object makeObject() {
    if(blocking)
          return new BlockingClientHandler(id);
    else
      return new NonBlockingClientHandler(id);
  }

  //Uninitialize an instance to be returned to the pool.
    public void passivateObject(Object obj) {
    ClientHandler ch = (ClientHandler)obj;
    ch.clean();
    }

  //Reinitialize an instance to be returned by the pool.
    public void activateObject(Object obj) {
  }
 
  //Destroys an instance no longer needed by the pool.
  public void destroyObject(Object obj) {
    if(obj==null) return;
    passivateObject(obj);
    obj = null;
  }

  //Ensures that the instance is safe to be returned by the pool.
  public boolean validateObject(Object obj) {
    if(obj==null)
      return false;
   
    BasicClientHandler ch = (BasicClientHandler)obj;
    if(ch.getInstanceCount()==id)
      return true;
    else {
      return false;
    }
  }
}
TOP

Related Classes of org.quickserver.util.pool.ClientHandlerObjectFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.