client-cpp  0.6.3
KaaClient.hpp
Go to the documentation of this file.
1 /*
2  * Copyright 2014 CyberVision, Inc.
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 
17 #ifndef KAACLIENT_HPP_
18 #define KAACLIENT_HPP_
19 
20 #include "kaa/IKaaClient.hpp"
21 
22 #include "kaa/ClientStatus.hpp"
27 #include "kaa/event/gen/EventFamilyFactory.hpp"
36 #include "kaa/ClientStatus.hpp"
43 #include "kaa/log/LogCollector.hpp"
44 
45 namespace kaa {
46 
47 typedef std::shared_ptr<IBootstrapManager> IBootstrapManagerPtr;
48 
49 #ifdef KAA_USE_CONFIGURATION
50 typedef std::shared_ptr<DefaultDeltaManager> DefaultDeltaManagerPtr;
51 #endif
52 
53 typedef enum KaaOption {
59 } KaaOption;
60 
61 class KaaClient : public IKaaClient {
62 public:
63  KaaClient();
64  virtual ~KaaClient() { }
65 
66  void init(int options = KAA_DEFAULT_OPTIONS);
67  void start();
68  void stop();
69  void pause();
70  void resume();
71 
72  virtual IProfileManager& getProfileManager() { return *profileManager_; }
73 #ifdef KAA_USE_CONFIGURATION
74  virtual ISchemaPersistenceManager& getSchemaPersistenceManager() { return *schemaPersistenceManager_; }
75  virtual IConfigurationPersistenceManager& getConfigurationPersistenceManager() { return *configurationPersistenceManager_; }
76  virtual IDeltaManager& getDeltaManager() { return *deltaManager_; }
77  virtual IConfigurationManager& getConfigurationManager() { return *configurationManager_; }
78 #endif
79 #ifdef KAA_USE_NOTIFICATIONS
80  virtual INotificationManager& getNotificationManager() { return *notificationManager_; }
81 #endif
82 #ifdef KAA_USE_EVENTS
83  virtual IEndpointRegistrationManager& getEndpointRegistrationManager() { return *registrationManager_; }
84  virtual EventFamilyFactory& getEventFamilyFactory() { return *eventFamilyFactory_; }
85  virtual IEventListenersResolver& getEventListenersResolver() { return *eventManager_; }
86 #endif
87  virtual IKaaChannelManager& getChannelManager() { return *channelManager_; }
88  virtual const KeyPair& getClientKeyPair() { return *clientKeys_; }
89 #ifdef KAA_USE_LOGGING
90  virtual ILogCollector& getLogCollector() { return *logCollector_; }
91 #endif
92  virtual IKaaDataMultiplexer& getOperationMultiplexer() { return *syncProcessor_; }
93  virtual IKaaDataDemultiplexer& getOperationDemultiplexer() { return *syncProcessor_; }
94 
95  virtual IKaaDataMultiplexer& getBootstrapMultiplexer() { return *syncProcessor_; }
96  virtual IKaaDataDemultiplexer& getBootstrapDemultiplexer() { return *syncProcessor_; }
97 private:
98  void initKaaConfiguration();
99  void initKaaTransport();
100  void initClientKeys();
101 
102  void setDefaultConfiguration();
103 
104 public:
108 private:
110  IBootstrapManagerPtr bootstrapManager_;
111  std::unique_ptr<ProfileManager> profileManager_;
112 #ifdef KAA_USE_NOTIFICATIONS
113  std::unique_ptr<NotificationManager> notificationManager_;
114 #endif
115 
116  std::unique_ptr<KeyPair> clientKeys_;
117  std::string publicKeyHash_;
118 
119 #ifdef KAA_USE_CONFIGURATION
120  ISchemaProcessorPtr schemaProcessor_;
121  DefaultDeltaManagerPtr deltaManager_;
122  IConfigurationManagerPtr configurationManager_;
123  IConfigurationProcessorPtr configurationProcessor_;
124  ISchemaPersistenceManagerPtr schemaPersistenceManager_;
125  IConfigurationPersistenceManagerPtr configurationPersistenceManager_;
126 #endif
127 #ifdef KAA_USE_EVENTS
128  std::unique_ptr<EventManager> eventManager_;
129  std::unique_ptr<EventFamilyFactory> eventFamilyFactory_;
130  std::unique_ptr<EndpointRegistrationManager> registrationManager_;
131 #endif
132  std::unique_ptr<IKaaChannelManager> channelManager_;
133  std::unique_ptr<SyncDataProcessor> syncProcessor_;
134 
135 #ifdef KAA_DEFAULT_BOOTSTRAP_HTTP_CHANNEL
136  std::unique_ptr<DefaultBootstrapChannel> bootstrapChannel_;
137 #endif
138 #ifdef KAA_DEFAULT_TCP_CHANNEL
139  std::unique_ptr<DefaultOperationTcpChannel> opsTcpChannel_;
140 #endif
141 #ifdef KAA_DEFAULT_OPERATION_HTTP_CHANNEL
142  std::unique_ptr<DefaultOperationHttpChannel> opsHttpChannel_;
143 #endif
144 #ifdef KAA_DEFAULT_LONG_POLL_CHANNEL
145  std::unique_ptr<DefaultOperationLongPollChannel> opsLongPollChannel_;
146 #endif
147 #ifdef KAA_USE_LOGGING
148  std::unique_ptr<LogCollector> logCollector_;
149 #endif
150 
151  int options_;
152 };
153 
154 }
155 
156 
157 
158 #endif /* KAACLIENT_HPP_ */
virtual IProfileManager & getProfileManager()
Definition: KaaClient.hpp:72
virtual IKaaDataDemultiplexer & getBootstrapDemultiplexer()
Definition: KaaClient.hpp:96
virtual IKaaChannelManager & getChannelManager()
Definition: KaaClient.hpp:87
void init(int options=KAA_DEFAULT_OPTIONS)
virtual ~KaaClient()
Definition: KaaClient.hpp:64
virtual IKaaDataDemultiplexer & getOperationDemultiplexer()
Definition: KaaClient.hpp:93
virtual IKaaDataMultiplexer & getBootstrapMultiplexer()
Definition: KaaClient.hpp:95
KaaOption
Definition: KaaClient.hpp:53
std::shared_ptr< IBootstrapManager > IBootstrapManagerPtr
Definition: KaaClient.hpp:47
std::shared_ptr< IKaaClientStateStorage > IKaaClientStateStoragePtr
static const int KAA_DEFAULT_OPTIONS
Definition: KaaClient.hpp:105
virtual IKaaDataMultiplexer & getOperationMultiplexer()
Definition: KaaClient.hpp:92
virtual const KeyPair & getClientKeyPair()
Definition: KaaClient.hpp:88