/** * */ package com.ganji.as.thrift.protocol.builder; import java.net.SocketAddress; import org.apache.thrift.protocol.TBinaryProtocol; import org.apache.thrift.protocol.TProtocolFactory; import org.slf4j.Logger; import com.ganji.as.thrift.protocol.client.intf.ThriftProtocolClientRetryPolicy; import com.ganji.as.thrift.protocol.client.policy.session.retry.ThriftProtocolSessionRetryPolicy; import com.ganji.as.thrift.protocol.cluster.load.balance.ConsistentHashLoadBalance; import com.ganji.as.thrift.protocol.cluster.load.balance.LoadBalance; import com.ganji.as.thrift.protocol.service.intf.ThriftProtocolService; import com.ganji.as.thrift.protocol.service.ThriftProtocolServiceProxy; /** * @author yikangfeng * @date 2015年7月20日 */ public class ThriftProtocolClientBuilding extends ThriftProtocolClientBuilder { private ClientBuildingConfig clientBuildingConfig_; static final private LoadBalance defaultLoadBalancePolicy_ = new ConsistentHashLoadBalance(); static final private ThriftProtocolClientRetryPolicy defaultRetryPolicy_ = new ThriftProtocolSessionRetryPolicy(); ThriftProtocolClientBuilding() { this.clientBuildingConfig_ = new ClientBuildingConfig(); this.clientBuildingConfig_ .setLoadBalancePolicy(defaultLoadBalancePolicy_);// set // default // load // balance // policy. this.clientBuildingConfig_.setRetryPolicy(defaultRetryPolicy_); } @Override public ThriftProtocolClientBuilder name(final String name) { // TODO Auto-generated method stub clientBuildingConfig_.setClientName(name); return this; } @Override public ThriftProtocolClientBuilder logger(final Logger logger) { // TODO Auto-generated method stub clientBuildingConfig_.setLogger(logger); return this; } @Override public ThriftProtocolClientBuilder tcpConnectTimeout( final int tcpConnectTimeout) { // TODO Auto-generated method stub clientBuildingConfig_.setTcpConnectTimeout(tcpConnectTimeout); return this; } @Override public ThriftProtocolClientBuilder sendBufferSize(final int value) { // TODO Auto-generated method stub clientBuildingConfig_.setSendBufferSize(value); return this; } @Override public ThriftProtocolClientBuilder recvBufferSize(final int value) { // TODO Auto-generated method stub clientBuildingConfig_.setRecvBufferSize(value); return this; } @Override public ThriftProtocolClientBuilder hosts( final SocketAddress inetSocketAddress) { // TODO Auto-generated method stub clientBuildingConfig_.setHosts(inetSocketAddress); return this; } @Override public ThriftProtocolClientBuilder dest(final String addr) { // TODO Auto-generated method stub clientBuildingConfig_.setDestAddr(addr); return this; } @Override public ThriftProtocolClientBuilder codec(TProtocolFactory protocolFactory) { // TODO Auto-generated method stub if (protocolFactory == null) protocolFactory = new TBinaryProtocol.Factory(); clientBuildingConfig_.setCodec(protocolFactory); return this; } @Override public ThriftProtocolClientBuilder retries(final int value) { // TODO Auto-generated method stub if (value <= 0) throw new IllegalArgumentException("The parameter value must be >0"); clientBuildingConfig_.setRetries(value); return this; } @Override public ThriftProtocolClientBuilder hostConnectionCoreSize(final int value) { // TODO Auto-generated method stub if (value < 0) throw new IllegalArgumentException( "The parameter value must be >=0"); clientBuildingConfig_.setHostConnectionCoreSize(value); return this; } @Override public ThriftProtocolClientBuilder hostConnectionMinIdle(int value) { // TODO Auto-generated method stub if (value <= 0) throw new IllegalArgumentException("The parameter value must be >0"); clientBuildingConfig_.setHostConnectionMinIdle(value); return this; } @Override public ThriftProtocolClientBuilder hostConnectionMaxIdle(int value) { // TODO Auto-generated method stub if (value <= 0) throw new IllegalArgumentException( "The parameter value must be >0"); clientBuildingConfig_.setHostConnectionMaxIdle(value); return this; } @Override public ThriftProtocolClientBuilder hostConnectionLimit(final int value) { // TODO Auto-generated method stub if (value <= 0) throw new IllegalArgumentException("The parameter value must be >0"); clientBuildingConfig_.setHostConnectionLimit(value); return this; } @Override public ThriftProtocolClientBuilder hostConnectionIdleTime(final int duration) { // TODO Auto-generated method stub clientBuildingConfig_.setHostConnectionIdleTime(duration); return this; } @Override public ThriftProtocolClientBuilder hostConnectionMaxWaiters( final int nWaiters) { // TODO Auto-generated method stub clientBuildingConfig_.setHostConnectionMaxWaiters(nWaiters); return this; } @Override public ThriftProtocolClientBuilder maxWaitHostConnectionMillis( int maxWaitMillis) { // TODO Auto-generated method stub clientBuildingConfig_.setMaxWaitHostConnectionMillis(maxWaitMillis); return this; } @Override public ThriftProtocolClientBuilder hostConnectionMaxIdleTime( final int duration) { // TODO Auto-generated method stub clientBuildingConfig_.setHostConnectionIdleTime(duration); return this; } @Override public ThriftProtocolClientBuilder hostConnectionMaxLifeTime( final int duration) { // TODO Auto-generated method stub clientBuildingConfig_.setHostConnectionMaxLifeTime(duration); return this; } @Override public ThriftProtocolClientBuilder hostConnectionBufferSize( final int bufferSize) { // TODO Auto-generated method stub clientBuildingConfig_.setHostConnectionBufferSize(bufferSize); return this; } @Override public ThriftProtocolClientBuilder retryPolicy( ThriftProtocolClientRetryPolicy retryPolicy) { // TODO Auto-generated method stub if (retryPolicy == null) throw new NullPointerException("The session retry policy is null."); clientBuildingConfig_.setRetryPolicy(retryPolicy); return this; } @Override public ThriftProtocolClientBuilder loadBalancePolicy( LoadBalance loadBalancePolicy) { // TODO Auto-generated method stub if (loadBalancePolicy == null) throw new NullPointerException("The load balance policy is null."); clientBuildingConfig_.setLoadBalancePolicy(loadBalancePolicy); return this; } @Override <REQ, REP> ThriftProtocolService<REQ, REP> build() throws Throwable { // TODO Auto-generated method stub return new ThriftProtocolServiceProxy<REQ, REP>( this.clientBuildingConfig_).proxy_; } }