package org.infinispan.server.core.configuration;
import java.util.Set;
import org.infinispan.commons.configuration.Self;
/**
* ProtocolServerConfigurationChildBuilder.
*
* @author Tristan Tarrant
* @since 5.3
*/
public interface ProtocolServerConfigurationChildBuilder<T extends ProtocolServerConfiguration, S extends ProtocolServerConfigurationChildBuilder<T,S>> extends Self<S> {
/**
* Specifies the cache to use as a default cache for the protocol
*/
S defaultCacheName(String defaultCacheName);
/**
* Specifies a custom name for this server in order to easily distinguish it from other servers, e.g. via JMX. Defaults to the empty string.
*/
S name(String name);
/**
* Specifies the host or IP address on which this server will listen
*/
S host(String host);
/**
* Specifies the port on which this server will listen
*/
S port(int port);
/**
* Specifies the maximum time that connections from client will be kept open without activity
*/
S idleTimeout(int idleTimeout);
/**
* Affects TCP NODELAY on the TCP stack. Defaults to enabled
*/
S tcpNoDelay(boolean tcpNoDelay);
/**
* Sets the size of the receive buffer
*/
S recvBufSize(int recvBufSize);
/**
* Sets the size of the send buffer
*/
S sendBufSize(int sendBufSize);
/**
* Configures SSL
*/
SslConfigurationBuilder ssl();
/**
* Sets the number of worker threads
*/
S workerThreads(int workerThreads);
/**
* Sets the caches to be ignored
*/
S ignoredCaches(Set<String> ignoredCaches);
/**
* Indicates whether transport implementation should or should not be started.
*/
S startTransport(boolean startTransport);
/**
* Builds a configuration object
*/
T build();
}