Infinispan HotRod C++ Client  8.3.1.Final
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
ConfigurationBuilder.h
Go to the documentation of this file.
1 #ifndef ISPN_HOTROD_CONFIGURATION_CONFIGURATIONBUILDER_H
2 #define ISPN_HOTROD_CONFIGURATION_CONFIGURATIONBUILDER_H
3 
4 #include <string>
5 #include <vector>
6 #include <sstream>
7 #include <fstream>
8 #include <iostream>
9 
10 #include "infinispan/hotrod/defs.h"
13 #include "Configuration.h"
17 #include "NearCacheConfiguration.h"
18 
19 using namespace infinispan::hotrod::event;
20 
21 namespace infinispan {
22 namespace hotrod {
23 
29 {
30 public:
31  ClusterConfigurationBuilder(std::vector<ServerConfigurationBuilder>& servers, ConfigurationBuilder &parent) : servers(servers), m_parent(parent) {}
40  ClusterConfigurationBuilder& addClusterNode(const std::string host, const int port)
41  {
42  servers.push_back(ServerConfigurationBuilder(m_parent).host(host).port(port));
43  return *this;
44  }
45 private:
46  std::vector<ServerConfigurationBuilder>& servers;
47  ConfigurationBuilder &m_parent;
48 };
49 
54 {
55 public:
57 
61  int getMaxEntries() const {
62  return m_maxEntries;
63  }
64 
72  NearCacheConfigurationBuilder& maxEntries(unsigned int maxEntries = 0) {
73  this->m_maxEntries = maxEntries;
74  return *this;
75  }
76 
81  return m_mode;
82  }
83 
92  this->m_mode = mode;
93  return *this;
94  }
95 
97  {
98  return NearCacheConfiguration(m_mode,m_maxEntries);
99  }
100 
101  private:
102  NearCacheMode m_mode=DISABLED;
103  unsigned int m_maxEntries=0;
104 };
105 
112 {
113  public:
115  m_connectionTimeout(60000),
116  m_forceReturnValue(false),
117  m_keySizeEstimate(64),
118  m_protocolVersion(Configuration::PROTOCOL_VERSION_24),
119  m_socketTimeout(60000),
120  m_tcpNoDelay(true),
121  m_valueSizeEstimate(512),
122  m_maxRetries(10),
123  m_balancingStrategyProducer(nullptr),
124  __pragma(warning(suppress:4355)) // passing uninitialized 'this'
125  connectionPoolConfigurationBuilder(*this),
126  __pragma(warning(suppress:4355))
127  securityConfigurationBuilder(*this),
128  nearCacheConfigurationBuilder(*this),
129  m_transactional(false)
130  {}
131 
132  void validate() {}
133 
141  ClusterConfigurationBuilder addCluster(const std::string& clusterName) {
142  return ClusterConfigurationBuilder(m_serversMap[clusterName],*this);
143  }
144 
152  if (m_serversMap.find(Configuration::DEFAULT_CLUSTER_NAME) == m_serversMap.end())
153  {
155  }
156  auto& servers = m_serversMap[Configuration::DEFAULT_CLUSTER_NAME];
157  servers.push_back(ServerConfigurationBuilder(*this));
158  return servers[servers.size() - 1];
159  }
160 
161 
168  ConfigurationBuilder& addServers(std::string servers) {
169  std::istringstream originalStream(servers);
170  std::string stringHelper;
171  std::string hostHelper;
172  std::string portHelper;
173  int portInt;
174 
175  // TODO: handle IPv6 addresses
176  while(std::getline(originalStream,stringHelper,';')) {
177  std::istringstream singleServerStream(stringHelper);
178  std::getline(singleServerStream,hostHelper,':');
179  std::getline(singleServerStream,portHelper,':');
180  std::istringstream portStream(portHelper);
181  portStream >> portInt;
182  addServer().host(hostHelper).port(portInt);
183  }
184 
185  return *this;
186  }
187 
194  return connectionPoolConfigurationBuilder;
195  }
196 
202  ConfigurationBuilder& connectionTimeout(int connectionTimeout_) {
203  m_connectionTimeout = connectionTimeout_;
204  return *this;
205  }
206 
213  ConfigurationBuilder& forceReturnValues(bool forceReturnValues_) {
214  m_forceReturnValue = forceReturnValues_;
215  return *this;
216  }
217 
223  ConfigurationBuilder& keySizeEstimate(int keySizeEstimate_) {
224  m_keySizeEstimate = keySizeEstimate_;
225  return *this;
226  }
227 
235  ConfigurationBuilder& protocolVersion(const std::string &protocolVersion_) {
236  m_protocolVersion = protocolVersion_;
237  return *this;
238  }
239 
246  ConfigurationBuilder& socketTimeout(int socketTimeout_) {
247  m_socketTimeout = socketTimeout_;
248  return *this;
249  }
250 
257  return securityConfigurationBuilder.getSslConfigurationBuilder();
258  }
259 
266  return nearCacheConfigurationBuilder;
267  }
268 
274  ConfigurationBuilder& tcpNoDelay(bool tcpNoDelay_) {
275  m_tcpNoDelay = tcpNoDelay_;
276  return *this;
277  }
278 
284  ConfigurationBuilder& valueSizeEstimate(int valueSizeEstimate_) {
285  m_valueSizeEstimate = valueSizeEstimate_;
286  return *this;
287  }
288 
295  ConfigurationBuilder& maxRetries(int maxRetries_) {
296  m_maxRetries = maxRetries_;
297  return *this;
298  }
299 
301  m_balancingStrategyProducer = bsp;
302  return *this;
303  }
304 
312  return create();
313  }
314 
322  std::map<std::string,std::vector<ServerConfiguration>> serversMap;
323  for (auto p: m_serversMap)
324  {
325  std::vector<ServerConfiguration> scVec;
326  for (auto e : p.second)
327  {
328  scVec.push_back(e.create());
329  }
330  serversMap.insert(std::make_pair(p.first, scVec));
331  }
332  if (serversMap.size()==0)
333  {
334  std::vector<ServerConfiguration> scVec;
335  scVec.push_back(ServerConfigurationBuilder(*this).create());
336  serversMap.insert(std::make_pair(Configuration::DEFAULT_CLUSTER_NAME, scVec));
337  }
338 
339  return Configuration(m_protocolVersion,
340  connectionPoolConfigurationBuilder.create(),
341  m_connectionTimeout,
342  m_forceReturnValue,
343  m_keySizeEstimate,
344  serversMap,
345  m_socketTimeout,
346  securityConfigurationBuilder.create(),
347  m_tcpNoDelay,
348  m_valueSizeEstimate,
349  m_maxRetries,
350  nearCacheConfigurationBuilder.create(),
351  m_balancingStrategyProducer,
352  m_eventMarshaller, m_transactional);
353 
354  }
355 
363  // FIXME: read pool, ssl and server configs
364  m_protocolVersion = configuration.getProtocolVersionCString();
365  m_connectionTimeout = configuration.getConnectionTimeout();
366  m_forceReturnValue = configuration.isForceReturnValue();
367  m_socketTimeout = configuration.getSocketTimeout();
368  m_tcpNoDelay = configuration.isTcpNoDelay();
369  m_keySizeEstimate = configuration.getKeySizeEstimate();
370  m_valueSizeEstimate = configuration.getValueSizeEstimate();
371  m_maxRetries = configuration.getMaxRetries();
372  m_eventMarshaller = configuration.getEventMarshaller();
373  m_transactional = configuration.isTransactional();
374  return *this;
375  }
382  {
383  return securityConfigurationBuilder;
384  }
385 
386  bool isTransactional() const
387  {
388  return m_transactional;
389  }
390 
392  {
393  m_transactional = transactional;
394  return *this;
395  }
396 
397  private:
398  int m_connectionTimeout;
399  bool m_forceReturnValue;
400  int m_keySizeEstimate;
401  std::string m_protocolVersion;
402  std::map<std::string,std::vector<ServerConfigurationBuilder> >m_serversMap;
403  int m_socketTimeout;
404  bool m_tcpNoDelay;
405  int m_valueSizeEstimate;
406  unsigned int m_maxRetries;
407  FailOverRequestBalancingStrategy::ProducerFn m_balancingStrategyProducer;
408  ConnectionPoolConfigurationBuilder connectionPoolConfigurationBuilder;
409  SecurityConfigurationBuilder securityConfigurationBuilder;
410  JBasicEventMarshaller m_defaultEventMarshaller;
411  NearCacheConfigurationBuilder nearCacheConfigurationBuilder;
412  bool m_transactional;
413 
414  EventMarshaller &m_eventMarshaller=m_defaultEventMarshaller;
415 };
416 
417 }} // namespace
418 
419 #endif // ISPN_HOTROD_CONFIGURATION_CONFIGURATIONBUILDER_H
ConfigurationBuilder & addServers(std::string servers)
Definition: ConfigurationBuilder.h:168
ConnectionPoolConfigurationBuilder & connectionPool()
Definition: ConfigurationBuilder.h:193
HR_EXTERN const event::EventMarshaller & getEventMarshaller() const
ConfigurationBuilder & keySizeEstimate(int keySizeEstimate_)
Definition: ConfigurationBuilder.h:223
bool isTransactional() const
Definition: Configuration.h:201
HR_EXTERN const int & getSocketTimeout() const
void validate()
Definition: ConfigurationBuilder.h:132
NearCacheConfiguration create()
Definition: ConfigurationBuilder.h:96
HR_EXTERN const int & getValueSizeEstimate() const
NearCacheConfigurationBuilder & maxEntries(unsigned int maxEntries=0)
Definition: ConfigurationBuilder.h:72
ConfigurationBuilder()
Definition: ConfigurationBuilder.h:114
ConfigurationBuilder & valueSizeEstimate(int valueSizeEstimate_)
Definition: ConfigurationBuilder.h:284
ConfigurationBuilder & maxRetries(int maxRetries_)
Definition: ConfigurationBuilder.h:295
NearCacheConfigurationBuilder(ConfigurationBuilder &_builder)
Definition: ConfigurationBuilder.h:56
Definition: NearCacheConfiguration.h:32
ServerConfigurationBuilder & addServer()
Definition: ConfigurationBuilder.h:151
HR_EXTERN const int & getKeySizeEstimate() const
Definition: SecurityConfigurationBuilder.h:19
Definition: ConnectionPoolConfigurationBuilder.h:15
Definition: ConfigurationBuilder.h:53
Definition: NearCacheConfiguration.h:21
ConfigurationBuilder & socketTimeout(int socketTimeout_)
Definition: ConfigurationBuilder.h:246
Definition: SslConfigurationBuilder.h:12
bool isTransactional() const
Definition: ConfigurationBuilder.h:386
HR_EXTERN const int & getMaxRetries() const
NearCacheMode
Definition: NearCacheConfiguration.h:20
ConfigurationBuilder & balancingStrategyProducer(FailOverRequestBalancingStrategy::ProducerFn bsp)
Definition: ConfigurationBuilder.h:300
Definition: ServerConfigurationBuilder.h:25
HR_EXTERN const bool & isForceReturnValue() const
Definition: ConfigurationBuilder.h:28
virtual ServerConfiguration create()
Definition: ServerConfigurationBuilder.h:62
ConfigurationBuilder & forceReturnValues(bool forceReturnValues_)
Definition: ConfigurationBuilder.h:213
HR_EXTERN const int & getConnectionTimeout() const
Definition: Configuration.h:28
Configuration create()
Definition: ConfigurationBuilder.h:321
HR_EXTERN const char * getProtocolVersionCString() const
FailOverRequestBalancingStrategy *(* ProducerFn)()
Definition: FailOverRequestBalancingStrategy.h:19
#define __pragma(...)
Definition: defs.h:106
int getMaxEntries() const
Definition: ConfigurationBuilder.h:61
NearCacheConfigurationBuilder & mode(NearCacheMode mode=DISABLED)
Definition: ConfigurationBuilder.h:91
NearCacheConfigurationBuilder & nearCache()
Definition: ConfigurationBuilder.h:265
Definition: ConfigurationBuilder.h:111
HR_EXTERN const bool & isTcpNoDelay() const
Definition: ConfigurationChildBuilder.h:18
NearCacheMode getMode() const
Definition: ConfigurationBuilder.h:80
static HR_EXTERN const char * DEFAULT_CLUSTER_NAME
Definition: Configuration.h:44
Configuration build()
Definition: ConfigurationBuilder.h:311
ConfigurationBuilder & protocolVersion(const std::string &protocolVersion_)
Definition: ConfigurationBuilder.h:235
SslConfigurationBuilder & ssl()
Definition: ConfigurationBuilder.h:256
SecurityConfigurationBuilder & security()
Definition: ConfigurationBuilder.h:381
ConfigurationBuilder & read(Configuration &configuration)
Definition: ConfigurationBuilder.h:362
ClusterConfigurationBuilder(std::vector< ServerConfigurationBuilder > &servers, ConfigurationBuilder &parent)
Definition: ConfigurationBuilder.h:31
ConfigurationBuilder & tcpNoDelay(bool tcpNoDelay_)
Definition: ConfigurationBuilder.h:274
ConfigurationBuilder & setTransactional(bool transactional)
Definition: ConfigurationBuilder.h:391
ConfigurationBuilder & connectionTimeout(int connectionTimeout_)
Definition: ConfigurationBuilder.h:202
ClusterConfigurationBuilder addCluster(const std::string &clusterName)
Definition: ConfigurationBuilder.h:141
ClusterConfigurationBuilder & addClusterNode(const std::string host, const int port)
Definition: ConfigurationBuilder.h:40