/**
*
*/
package com.github.phantomthief.thrift.client;
import java.util.function.Function;
import org.apache.thrift.TServiceClient;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TTransport;
/**
* <p>ThriftClient interface.</p>
*
* @author w.vela
* @version $Id: $Id
*/
public interface ThriftClient {
/**
* <p>iface.</p>
*
* @param ifaceClass a {@link java.lang.Class} object.
* @return a X object.
*/
<X extends TServiceClient> X iface(Class<X> ifaceClass);
/**
* <p>iface.</p>
*
* @param ifaceClass a {@link java.lang.Class} object.
* @param hash a int.
* @return a X object.
*/
<X extends TServiceClient> X iface(Class<X> ifaceClass, int hash);
/**
* <p>iface.</p>
*
* @param ifaceClass a {@link java.lang.Class} object.
* @param protocolProvider a {@link java.util.function.Function} object.
* @param hash a int.
* @return a X object.
*/
<X extends TServiceClient> X iface(Class<X> ifaceClass,
Function<TTransport, TProtocol> protocolProvider, int hash);
/**
* <p>mpiface.</p>
*
* @param ifaceClass the {@link java.lang.Class} of the TServiceClient.
* @param serviceName the {@link java.lang.String} name of the service.
* @return a X object.
*/
public <X extends TServiceClient> X mpiface(Class<X> ifaceClass, String serviceName);
/**
* <p>mpiface.</p>
*
* @param ifaceClass the {@link java.lang.Class} of the TServiceClient.
* @param serviceName the {@link java.lang.String} name of the service.
* @param hash a int.
* @return a X object.
*/
public <X extends TServiceClient> X mpiface(Class<X> ifaceClass, String serviceName, int hash);
/**
* <p>mpiface.</p>
*
* @param ifaceClass the {@link java.lang.Class} of the TServiceClient.
* @param serviceName the {@link java.lang.String} name of the service.
* @param protocolProvider a {@link java.util.function.Function} object.
* @param hash a int.
* @return a X object.
*/
public <X extends TServiceClient> X mpiface(Class<X> ifaceClass, String serviceName,
Function<TTransport, TProtocol> protocolProvider, int hash);
}