package org.infinispan.persistence.remote.configuration;
import org.infinispan.client.hotrod.ProtocolVersion;
import org.infinispan.client.hotrod.RemoteCacheManager;
import org.infinispan.client.hotrod.impl.transport.TransportFactory;
import org.infinispan.commons.marshall.Marshaller;
import org.infinispan.configuration.cache.StoreConfigurationChildBuilder;
import org.infinispan.container.entries.InternalCacheEntry;
public interface RemoteStoreConfigurationChildBuilder<S> extends StoreConfigurationChildBuilder<S> {
/**
* Adds a new remote server
*/
RemoteServerConfigurationBuilder addServer();
/**
* Configuration for the executor service used for asynchronous work on the Transport, including
* asynchronous marshalling and Cache 'async operations' such as Cache.putAsync().
*/
ExecutorFactoryConfigurationBuilder asyncExecutorFactory();
/**
* For replicated (vs distributed) Hot Rod server clusters, the client balances requests to the
* servers according to this strategy.
*/
RemoteStoreConfigurationBuilder balancingStrategy(String balancingStrategy);
/**
* Configures the connection pool
*/
ConnectionPoolConfigurationBuilder connectionPool();
/**
* This property defines the maximum socket connect timeout before giving up connecting to the
* server.
*/
RemoteStoreConfigurationBuilder connectionTimeout(long connectionTimeout);
/**
* Whether or not to implicitly FORCE_RETURN_VALUE for all calls.
*/
RemoteStoreConfigurationBuilder forceReturnValues(boolean forceReturnValues);
/**
* Configures this RemoteStore so that it enables all settings needed to create entries to be served
* by a HotRod endpoint, for example when performing rolling upgrades.
*/
RemoteStoreConfigurationBuilder hotRodWrapping(boolean hotRodWrapping);
/**
* The class name of the driver used for connecting to the database.
*/
RemoteStoreConfigurationBuilder keySizeEstimate(int keySizeEstimate);
/**
* Allows you to specify a custom {@link org.infinispan.marshall.Marshaller} implementation to
* serialize and deserialize user objects.
*/
RemoteStoreConfigurationBuilder marshaller(String marshaller);
/**
* Allows you to specify a custom {@link org.infinispan.marshall.Marshaller} implementation to
* serialize and deserialize user objects.
*/
RemoteStoreConfigurationBuilder marshaller(Class<? extends Marshaller> marshaller);
/**
* This property defines the protocol version that this client should use. Defaults to {@link ProtocolVersion#DEFAULT_PROTOCOL_VERSION}
* @deprecated Use {@link #protocolVersion(ProtocolVersion)} instead
*/
@Deprecated
RemoteStoreConfigurationBuilder protocolVersion(String protocolVersion);
/**
* This property defines the protocol version that this client should use. Defaults to {@link ProtocolVersion#DEFAULT_PROTOCOL_VERSION}
*/
RemoteStoreConfigurationBuilder protocolVersion(ProtocolVersion protocolVersion);
/**
* Normally the {@link org.infinispan.persistence.remote.RemoteStore} stores values wrapped in {@link InternalCacheEntry}. Setting
* this property to true causes the raw values to be stored instead for interoperability with direct
* access by {@link RemoteCacheManager}s
*/
RemoteStoreConfigurationBuilder rawValues(boolean rawValues);
/**
* The name of the remote cache in the remote infinispan cluster, to which to connect to. If
* unspecified, the default cache will be used
*/
RemoteStoreConfigurationBuilder remoteCacheName(String remoteCacheName);
/**
* This property defines the maximum socket read timeout in milliseconds before giving up waiting
* for bytes from the server. Defaults to 60000 (1 minute)
*/
RemoteStoreConfigurationBuilder socketTimeout(long socketTimeout);
/**
* Affects TCP NODELAY on the TCP stack. Defaults to enabled
*/
RemoteStoreConfigurationBuilder tcpNoDelay(boolean tcpNoDelay);
/**
* Controls which transport to use. Currently only the TcpTransport is supported.
*/
RemoteStoreConfigurationBuilder transportFactory(String transportFactory);
/**
* Controls which transport to use. Currently only the TcpTransport is supported.
*/
RemoteStoreConfigurationBuilder transportFactory(Class<? extends TransportFactory> transportFactory);
/**
* This hint allows sizing of byte buffers when serializing and deserializing values, to minimize
* array resizing.
*/
RemoteStoreConfigurationBuilder valueSizeEstimate(int valueSizeEstimate);
}