00001 #ifndef ISPN_HOTROD_CONFIGURATION_CONFIGURATIONCHILDBUILDER_H 00002 #define ISPN_HOTROD_CONFIGURATION_CONFIGURATIONCHILDBUILDER_H 00003 00004 00005 00006 #include <string> 00007 #include "infinispan/hotrod/ImportExport.h" 00008 #include "Configuration.h" 00009 00010 namespace infinispan { 00011 namespace hotrod { 00012 00013 class ConfigurationBuilder; 00014 class ConnectionPoolConfigurationBuilder; 00015 class ServerConfigurationBuilder; 00016 class SslConfigurationBuilder; 00017 00018 class ConfigurationChildBuilder 00019 { 00020 public: 00021 ConfigurationChildBuilder(ConfigurationBuilder &builder): m_builder(&builder) {} 00022 00027 ServerConfigurationBuilder& addServer(); 00028 00034 ConfigurationBuilder& addServers(const std::string &servers); 00035 00041 ConnectionPoolConfigurationBuilder& connectionPool(); 00042 00049 ConfigurationBuilder& connectionTimeout(int connectionTimeout); 00050 00056 ConfigurationBuilder& forceReturnValues(bool forceReturnValues); 00057 00064 ConfigurationBuilder& keySizeEstimate(int keySizeEstimate); 00065 00071 ConfigurationBuilder& pingOnStartup(bool pingOnStartup); 00072 00080 ConfigurationBuilder& protocolVersion(const std::string &protocolVersion); 00081 00088 ConfigurationBuilder& socketTimeout(int socketTimeout); 00089 00095 SslConfigurationBuilder& ssl(); 00096 00102 ConfigurationBuilder& tcpNoDelay(bool tcpNoDelay); 00103 00110 ConfigurationBuilder& valueSizeEstimate(int valueSizeEstimate); 00111 00112 Configuration build(); 00113 00114 private: 00115 // in order to store this class in collections, operator= must work 00116 ConfigurationBuilder *m_builder; 00117 }; 00118 00119 }} // namespace 00120 00121 #endif // ISPN_HOTROD_CONFIGURATION_CONFIGURATIONCHILDBUILDER_H