Package org.apache.vinci.transport
Class PooledVinciClient
- java.lang.Object
-
- org.apache.vinci.transport.PooledVinciClient
-
public class PooledVinciClient extends java.lang.Object
Maintains a pool of connections to a given service and allows thread-safe querying of that service. This provides a set of sendAndReceive methods with signatures equivalent to those in VinciClient, but unlike VinciClient, the methods can be invoked concurrently by multiple threads.
-
-
Constructor Summary
Constructors Constructor Description PooledVinciClient(java.lang.String serviceName, int maxPoolSize)
Create a PooledVinciClient that will establish at most maxPoolSize connections to the designated service.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close(boolean wait)
Close this pooled client.java.lang.String
getServiceName()
Get the service name to which this client connects.Transportable
sendAndReceive(Transportable in)
Send a request to the service and receive the response.Transportable
sendAndReceive(Transportable in, int socketTimeout)
Send a request to the service and receive the response, using the provided socketTimeout in place of the client-provided one.Transportable
sendAndReceive(Transportable in, TransportableFactory f)
Send a request to the service and receive the response, using the provided transportable factory in place of the client-provided one.Transportable
sendAndReceive(Transportable in, TransportableFactory f, int socketTimeout)
Send a request to the service and receive the response, using the provided transportable factory and socketTimeout in place of the client-provided ones.void
setConnectTimeout(int connectTimeoutMillis)
Set a connect timeout that will be used in place of BaseClient.DEFAULT_CONNECT_TIMEOUTvoid
setContext(VinciContext context)
Set a VinciContext that will be used by this PooledVinciClient instead of the default global context.void
setSocketTimeout(int socketTimeoutMillis)
Set a socket timeout that will be used in place of BaseClient.DEFAULT_SOCKET_TIMEOUTvoid
setTransportableFactory(TransportableFactory factory)
Set a transportable factory that will be used in place of the VinciFrame factory.
-
-
-
Method Detail
-
setContext
public void setContext(VinciContext context)
Set a VinciContext that will be used by this PooledVinciClient instead of the default global context.- Parameters:
context
- -
-
setConnectTimeout
public void setConnectTimeout(int connectTimeoutMillis)
Set a connect timeout that will be used in place of BaseClient.DEFAULT_CONNECT_TIMEOUT- Parameters:
connectTimeoutMillis
- -
-
setSocketTimeout
public void setSocketTimeout(int socketTimeoutMillis)
Set a socket timeout that will be used in place of BaseClient.DEFAULT_SOCKET_TIMEOUT- Parameters:
socketTimeoutMillis
- -
-
setTransportableFactory
public void setTransportableFactory(TransportableFactory factory)
Set a transportable factory that will be used in place of the VinciFrame factory.- Parameters:
factory
- -
-
getServiceName
public java.lang.String getServiceName()
Get the service name to which this client connects.- Returns:
- -
-
sendAndReceive
public Transportable sendAndReceive(Transportable in) throws java.io.IOException, ServiceException
Send a request to the service and receive the response. This method is tread safe.- Parameters:
in
- -- Returns:
- -
- Throws:
java.io.IOException
- -ServiceException
- -
-
sendAndReceive
public Transportable sendAndReceive(Transportable in, TransportableFactory f) throws java.io.IOException, ServiceException
Send a request to the service and receive the response, using the provided transportable factory in place of the client-provided one. This method is tread safe.- Parameters:
in
- -f
- -- Returns:
- -
- Throws:
java.io.IOException
- -ServiceException
- -
-
sendAndReceive
public Transportable sendAndReceive(Transportable in, TransportableFactory f, int socketTimeout) throws java.io.IOException, ServiceException
Send a request to the service and receive the response, using the provided transportable factory and socketTimeout in place of the client-provided ones. This method is tread safe.- Parameters:
in
- -f
- -socketTimeout
- -- Returns:
- -
- Throws:
java.io.IOException
- -ServiceException
- -
-
sendAndReceive
public Transportable sendAndReceive(Transportable in, int socketTimeout) throws java.io.IOException, ServiceException
Send a request to the service and receive the response, using the provided socketTimeout in place of the client-provided one. This method is tread safe.- Parameters:
in
- -socketTimeout
- -- Returns:
- -
- Throws:
java.io.IOException
- -ServiceException
- -
-
close
public void close(boolean wait)
Close this pooled client. Blocked requests will return IOException, as will any requests following the invocation of this method. Once a pooled client is closed it cannot be reused.- Parameters:
wait
- If true, this method will block until all in-progress requests have completed, otherwise this method will return immediately (though in progress requests will still be allowed to complete)
-
-