package com.lefu.remote.netty.client.pool;
import io.netty.channel.Channel;
import org.apache.commons.pool2.impl.GenericObjectPool;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.lefu.remote.netty.client.NettyClient;
/**
* 默认的连接工厂实现
* @author jiang.li
*
*/
public class DefaultConnectionPoolFactory implements ConnectionPoolFactory {
private final Logger log = LoggerFactory.getLogger(getClass());
private final NettyClient nettyClient;
private GenericObjectPoolConfig defaultPoolConfig = new GenericObjectPoolConfig();
public DefaultConnectionPoolFactory(NettyClient nettyClient) {
this.nettyClient = nettyClient;
}
@Override
public GenericObjectPool<Channel> buildPool(String host, int port) {
return buildPool(host, port, null);
}
@Override
public GenericObjectPool<Channel> buildPool(String host, int port, GenericObjectPoolConfig config) {
if (config == null) {
config = defaultPoolConfig;
}
GenericObjectPool<Channel> pool = new GenericObjectPool<Channel>(new ChannelPooledObjectFactory(nettyClient, host, port), config);
log.info(String.format("Create connection pool with properties -> [Host=%1$s,Port=%2$d]", host, port));
return pool;
}
}