All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.infinispan.client.hotrod.impl.transport.tcp.PropsKeyedObjectPoolFactory Maven / Gradle / Ivy

There is a newer version: 9.1.7.Final
Show newest version
package org.infinispan.client.hotrod.impl.transport.tcp;

import org.apache.commons.pool.KeyedPoolableObjectFactory;
import org.apache.commons.pool.impl.GenericKeyedObjectPool;
import org.apache.commons.pool.impl.GenericKeyedObjectPoolFactory;
import org.infinispan.client.hotrod.configuration.ConnectionPoolConfiguration;
import org.infinispan.client.hotrod.configuration.ExhaustedAction;

/**
 * @author [email protected]
 * @since 4.1
 */
public class PropsKeyedObjectPoolFactory extends GenericKeyedObjectPoolFactory {

   public PropsKeyedObjectPoolFactory(KeyedPoolableObjectFactory factory, ConnectionPoolConfiguration configuration) {
      super(factory,
            configuration.maxActive(),
            mapExhaustedAction(configuration.exhaustedAction()),
            configuration.maxWait(),
            configuration.maxIdle(),
            configuration.maxTotal(),
            configuration.minIdle(),
            configuration.testOnBorrow(),
            configuration.testOnReturn(),
            configuration.timeBetweenEvictionRuns(),
            configuration.numTestsPerEvictionRun(),
            configuration.minEvictableIdleTime(),
            configuration.testWhileIdle(),
            configuration.lifo());
   }

   private static byte mapExhaustedAction(ExhaustedAction action) {
      switch (action) {
      case CREATE_NEW:
         return GenericKeyedObjectPool.WHEN_EXHAUSTED_GROW;
      case EXCEPTION:
         return GenericKeyedObjectPool.WHEN_EXHAUSTED_FAIL;
      case WAIT:
      default:
         return GenericKeyedObjectPool.WHEN_EXHAUSTED_BLOCK;
      }
   }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy