Hazelcast C++ Client
ClientConfig.h
1 /*
2  * Copyright (c) 2008-2017, Hazelcast, Inc. All Rights Reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 #ifndef HAZELCAST_CLIENT_CONFIG
17 #define HAZELCAST_CLIENT_CONFIG
18 
19 #include <vector>
20 #include <set>
21 
22 #include "hazelcast/client/Address.h"
23 #include "hazelcast/client/GroupConfig.h"
24 #include "hazelcast/client/SerializationConfig.h"
25 #include "hazelcast/client/Credentials.h"
26 #include "hazelcast/client/SocketInterceptor.h"
27 #include "hazelcast/client/LoadBalancer.h"
28 #include "hazelcast/client/impl/RoundRobinLB.h"
29 #include "hazelcast/util/ILogger.h"
30 #include "hazelcast/client/config/ReliableTopicConfig.h"
31 #include "hazelcast/client/config/NearCacheConfig.h"
32 #include "hazelcast/client/config/ClientNetworkConfig.h"
33 #include "hazelcast/util/SynchronizedMap.h"
34 
35 #if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64)
36 #pragma warning(push)
37 #pragma warning(disable: 4251) //for dll export
38 #endif
39 
40 namespace hazelcast {
41  namespace client {
42  class MembershipListener;
43 
44  class InitialMembershipListener;
45 
46  class LifecycleListener;
47 
51  class HAZELCAST_API ClientConfig {
52  public:
53 
62  ClientConfig();
63 
71  ClientConfig &addAddress(const Address &address);
72 
80  ClientConfig &addAddresses(const std::vector<Address> &addresses);
81 
88  std::set<Address, addressComparator> &getAddresses();
89 
97  ClientConfig &setGroupConfig(GroupConfig &groupConfig);
98 
103  GroupConfig &getGroupConfig();
104 
110  ClientConfig &setCredentials(Credentials *credentials);
111 
115  const Credentials *getCredentials();
116 
125  ClientConfig &setConnectionAttemptLimit(int connectionAttemptLimit);
126 
134  int getConnectionAttemptLimit() const;
135 
140  ClientConfig &setConnectionTimeout(int connectionTimeoutInMillis);
141 
146  int getConnectionTimeout() const;
147 
154  ClientConfig &setAttemptPeriod(int attemptPeriodInMillis);
155 
161  int getAttemptPeriod() const;
162 
174  ClientConfig &setRedoOperation(bool redoOperation);
175 
181  bool isRedoOperation() const;
182 
187  bool isSmart() const;
188 
199  ClientConfig &setSmart(bool smart);
200 
206  ClientConfig &setSocketInterceptor(SocketInterceptor *socketInterceptor);
207 
211  SocketInterceptor *getSocketInterceptor();
212 
223  ClientConfig &addListener(LifecycleListener *listener);
224 
229  const std::set<LifecycleListener *> &getLifecycleListeners() const;
230 
241  ClientConfig &addListener(MembershipListener *listener);
242 
248  const std::set<MembershipListener *> &getMembershipListeners() const;
249 
256  ClientConfig &addListener(InitialMembershipListener *listener);
257 
263  const std::set<InitialMembershipListener *> &getInitialMembershipListeners() const;
264 
270  LoadBalancer *const getLoadBalancer();
271 
280  ClientConfig &setLoadBalancer(LoadBalancer *loadBalancer);
281 
291  ClientConfig &setLogLevel(LogLevel loggerLevel);
292 
293 
298  SerializationConfig &getSerializationConfig();
299 
309  ClientConfig &setSerializationConfig(SerializationConfig const &serializationConfig);
310 
316  std::map<std::string, std::string> &getProperties();
317 
327  ClientConfig &setProperty(const std::string &name, const std::string &value);
328 
335  ClientConfig &addReliableTopicConfig(const config::ReliableTopicConfig &reliableTopicConfig);
336 
343  const config::ReliableTopicConfig *getReliableTopicConfig(const std::string &name);
344 
354  template <typename K, typename V>
355  ClientConfig &addNearCacheConfig(const boost::shared_ptr<config::NearCacheConfig<K, V> > nearCacheConfig) {
356  nearCacheConfigMap.put(nearCacheConfig->getName(), nearCacheConfig);
357  return *this;
358  }
359 
369  ClientConfig &addMixedNearCacheConfig(const boost::shared_ptr<mixedtype::config::MixedNearCacheConfig> nearCacheConfig) {
370  nearCacheConfigMap.put(nearCacheConfig->getName(), nearCacheConfig);
371  return *this;
372  }
373 
381  template <typename K, typename V>
382  const boost::shared_ptr<config::NearCacheConfig<K, V> > getNearCacheConfig(const std::string &name) {
383  boost::shared_ptr<config::NearCacheConfigBase> nearCacheConfig = lookupByPattern(name);
384  if (nearCacheConfig.get() == NULL) {
385  nearCacheConfig = nearCacheConfigMap.get("default");
386  }
387  // not needed for c++ client since it is always native memory
388  //initDefaultMaxSizeForOnHeapMaps(nearCacheConfig);
389  return boost::static_pointer_cast<config::NearCacheConfig<K, V> >(nearCacheConfig);
390  }
391 
392  const boost::shared_ptr<mixedtype::config::MixedNearCacheConfig> getMixedNearCacheConfig(const std::string &name);
393 
400  config::ClientNetworkConfig &getNetworkConfig();
401 
409  ClientConfig &setNetworkConfig(const config::ClientNetworkConfig &networkConfig);
410 
411  private:
412 
413  GroupConfig groupConfig;
414 
415  config::ClientNetworkConfig networkConfig;
416 
417  SerializationConfig serializationConfig;
418 
419  std::set<Address, addressComparator> addressList;
420 
421  LoadBalancer *loadBalancer;
422 
423  impl::RoundRobinLB defaultLoadBalancer;
424 
425  std::set<MembershipListener *> membershipListeners;
426 
427  std::set<InitialMembershipListener *> initialMembershipListeners;
428 
429  std::set<LifecycleListener *> lifecycleListeners;
430 
431  std::map<std::string, std::string> properties;
432 
433  bool smart;
434 
435  bool redoOperation;
436 
437  int connectionAttemptLimit;
438 
439  int attemptPeriod;
440 
441  SocketInterceptor *socketInterceptor;
442 
443  Credentials *credentials;
444 
445  std::map<std::string, config::ReliableTopicConfig> reliableTopicConfigMap;
446 
447  util::SynchronizedMap<std::string, config::NearCacheConfigBase> nearCacheConfigMap;
448 
449  const boost::shared_ptr<config::NearCacheConfigBase> lookupByPattern(const std::string &name) {
450  // TODO: implement the lookup
451  return nearCacheConfigMap.get(name);
452  }
453  };
454 
455  }
456 }
457 
458 #if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64)
459 #pragma warning(pop)
460 #endif
461 
462 #endif /* HAZELCAST_CLIENT_CONFIG */
Credentials is a container object for endpoint (Members and Clients) security attributes.
Definition: Credentials.h:35
Contains configuration parameters for client network related behaviour.
Definition: ClientNetworkConfig.h:37
Contains the configuration for a Near Cache.
Definition: NearCacheConfig.h:44
Base class for socketInterceptor classes to inherit from.
Definition: SocketInterceptor.h:33
Contains the configuration for Hazelcast groups.
Definition: GroupConfig.h:36
Cluster membership listener.
Definition: MembershipListener.h:51
IP Address.
Definition: Address.h:36
ClientConfig & addNearCacheConfig(const boost::shared_ptr< config::NearCacheConfig< K, V > > nearCacheConfig)
Helper method to add a new NearCacheConfig.
Definition: ClientConfig.h:355
const boost::shared_ptr< config::NearCacheConfig< K, V > > getNearCacheConfig(const std::string &name)
Gets the NearCacheConfig configured for the map / cache with name.
Definition: ClientConfig.h:382
SerializationConfig is used to.
Definition: SerializationConfig.h:49
ClientConfig & addMixedNearCacheConfig(const boost::shared_ptr< mixedtype::config::MixedNearCacheConfig > nearCacheConfig)
Helper method to add a new NearCacheConfig.
Definition: ClientConfig.h:369
Listener object for listening lifecycle events of hazelcast instance.
Definition: LifecycleListener.h:44
The InitializingMembershipListener is a MembershipListener that will first receives a InitialMembersh...
Definition: InitialMembershipListener.h:50
LoadBalancer allows you to send operations to one of a number of endpoints(Members).
Definition: LoadBalancer.h:40
Definition: MapEntryView.h:32
HazelcastClient configuration class.
Definition: ClientConfig.h:51
Definition: ReliableTopicConfig.h:30