client-cpp  0.7.4
KaaClient.hpp
Go to the documentation of this file.
1 /*
2  * Copyright 2014-2015 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 <memory>
21 
22 #include "kaa/IKaaClient.hpp"
23 #include "kaa/ClientStatus.hpp"
27 #include "kaa/event/gen/EventFamilyFactory.hpp"
32 #include "kaa/ClientStatus.hpp"
39 #include "kaa/log/LogCollector.hpp"
44 
45 namespace kaa {
46 
47 class KaaClient : public IKaaClient,
48  public std::enable_shared_from_this<IKaaClient> {
49 public:
51 
52  virtual void start();
53  virtual void stop();
54  virtual void pause();
55  virtual void resume();
56 
57  virtual void updateProfile();
59  virtual const KeyPair& getClientKeyPair();
60  virtual void setEndpointAccessToken(const std::string& token);
61  virtual std::string refreshEndpointAccessToken();
62  virtual std::string getEndpointAccessToken();
65  virtual EventFamilyFactory& getEventFamilyFactory();
66 
67  virtual void addLogRecord(const KaaUserLogRecord& record);
68  virtual void setLogStorage(ILogStoragePtr storage);
69  virtual void setLogUploadStrategy(ILogUploadStrategyPtr strategy);
70  virtual void setFailoverStrategy(IFailoverStrategyPtr strategy);
71  virtual void setProfileContainer(IProfileContainerPtr container);
74  virtual Topics getTopics();
75  virtual void addNotificationListener(INotificationListener& listener);
76  virtual void addNotificationListener(const std::string& topidId,
77  INotificationListener& listener);
78  virtual void removeNotificationListener(INotificationListener& listener);
79  virtual void removeNotificationListener(const std::string& topidId,
80  INotificationListener& listener);
81  virtual void subscribeToTopic(const std::string& id, bool forceSync);
82  virtual void subscribeToTopics(const std::list<std::string>& idList, bool forceSync);
83  virtual void unsubscribeFromTopic(const std::string& id, bool forceSync);
84  virtual void unsubscribeFromTopics(const std::list<std::string>& idList, bool forceSync);
85  virtual void syncTopicSubscriptions();
86  virtual void addConfigurationListener(IConfigurationReceiver &receiver);
88  virtual const KaaRootConfiguration& getConfiguration();
90  virtual void attachEndpoint(const std::string& endpointAccessToken
92  virtual void detachEndpoint(const std::string& endpointKeyHash
94  virtual void attachUser(const std::string& userExternalId, const std::string& userAccessToken
96  virtual void attachUser(const std::string& userExternalId, const std::string& userAccessToken
97  , const std::string& userVerifierToken
100  virtual bool isAttachedToUser();
101  virtual std::int32_t findEventListeners(const std::list<std::string>& eventFQNs
102  , IFetchEventListenersPtr listener);
103 
106 
107 private:
108  void init();
109 
110  void initKaaTransport();
111  void initClientKeys();
112 
113 private:
114 #ifdef KAA_DEFAULT_BOOTSTRAP_HTTP_CHANNEL
115  std::unique_ptr<DefaultBootstrapChannel> bootstrapChannel_;
116 #endif
117 #ifdef KAA_DEFAULT_TCP_CHANNEL
118  std::unique_ptr<DefaultOperationTcpChannel> opsTcpChannel_;
119 #endif
120 
121  IKaaClientPlatformContextPtr platformContext_;
122  IExecutorContext& executorContext_;
123  KaaClientProperties clientProperties_;
124  IKaaClientStateListenerPtr stateListener_;
125 
127  std::unique_ptr<IBootstrapManager> bootstrapManager_;
128  std::unique_ptr<IKaaChannelManager> channelManager_;
129  std::unique_ptr<SyncDataProcessor> syncProcessor_;
130  IFailoverStrategyPtr failoverStrategy_;
131  IProfileTransportPtr profileTransport_;
132 
133  std::unique_ptr<KeyPair> clientKeys_;
134  std::string publicKeyHash_;
135  std::unique_ptr<ProfileManager> profileManager_;
136 #ifdef KAA_USE_NOTIFICATIONS
137  std::unique_ptr<NotificationManager> notificationManager_;
138 #endif
139 #ifdef KAA_USE_CONFIGURATION
140  std::unique_ptr<ConfigurationManager> configurationManager_;
141 #endif
142 #ifdef KAA_USE_EVENTS
143  std::unique_ptr<EventManager> eventManager_;
144  std::unique_ptr<EventFamilyFactory> eventFamilyFactory_;
145  std::unique_ptr<EndpointRegistrationManager> registrationManager_;
146 #endif
147 #ifdef KAA_USE_LOGGING
148  std::unique_ptr<LogCollector> logCollector_;
149 #endif
150 };
151 
152 }
153 
154 
155 
156 #endif /* KAACLIENT_HPP_ */
virtual void attachUser(const std::string &userExternalId, const std::string &userAccessToken, IUserAttachCallbackPtr listener=IUserAttachCallbackPtr())
Attaches the current endpoint to the specifier user. The user verification is carried out by the defa...
virtual IKaaDataDemultiplexer & getBootstrapDemultiplexer()
Retrieves Kaa bootstrap data demultiplexer.
The listener which receives updates on available topics.
virtual IKaaChannelManager & getChannelManager()
Retrieves the Channel Manager.
virtual void setLogStorage(ILogStoragePtr storage)
Sets the new log storage.
virtual void stop()
Stops Kaa's workflow.
virtual IKaaDataDemultiplexer & getOperationDemultiplexer()
Retrieves Kaa operations data demultiplexer.
virtual void subscribeToTopic(const std::string &id, bool forceSync)
Subscribes to the specified optional topic to receive notifications on that topic.
std::shared_ptr< IFailoverStrategy > IFailoverStrategyPtr
virtual std::string getEndpointAccessToken()
Retrieve an access token for a current endpoint.
std::shared_ptr< IKaaClientPlatformContext > IKaaClientPlatformContextPtr
virtual void start()
Starts Kaa's workflow.
virtual void setProfileContainer(IProfileContainerPtr container)
Sets profile container implemented by the user.
virtual void addTopicListListener(INotificationTopicListListener &listener)
Adds the listener which receives updates on the list of available topics.
virtual IKaaDataMultiplexer & getBootstrapMultiplexer()
Retrieves Kaa bootstrap data multiplexer.
virtual void attachEndpoint(const std::string &endpointAccessToken, IAttachEndpointCallbackPtr listener=IAttachEndpointCallbackPtr())
Attaches the specified endpoint to the user to which the current endpoint is attached.
virtual void removeTopicListListener(INotificationTopicListListener &listener)
Removes listener which receives updates on the list of available topics.
virtual void removeNotificationListener(INotificationListener &listener)
Removes the listener which receives notifications on all available topics.
std::shared_ptr< IDetachEndpointCallback > IDetachEndpointCallbackPtr
virtual void unsubscribeFromTopics(const std::list< std::string > &idList, bool forceSync)
Unsubscribes from the specified list of optional topics to stop receiving notifications on those topi...
virtual void resume()
Resumes Kaa's workflow.
virtual void setConfigurationStorage(IConfigurationStoragePtr storage)
virtual std::string refreshEndpointAccessToken()
Generate new access token for a current endpoint.
virtual void setLogUploadStrategy(ILogUploadStrategyPtr strategy)
Sets the new log upload strategy.
virtual void setEndpointAccessToken(const std::string &token)
Set new access token for a current endpoint.
std::shared_ptr< IProfileContainer > IProfileContainerPtr
KaaClient(IKaaClientPlatformContextPtr context, IKaaClientStateListenerPtr listener)
std::shared_ptr< ILogStorage > ILogStoragePtr
The listener which receives notifications on the specified topic.
std::shared_ptr< IKaaClientStateStorage > IKaaClientStateStoragePtr
virtual void addConfigurationListener(IConfigurationReceiver &receiver)
virtual void syncTopicSubscriptions()
Sends subscription request(s) to the Operations server.
virtual void subscribeToTopics(const std::list< std::string > &idList, bool forceSync)
Subscribes to the specified list of optional topics to receive notifications on those topics...
virtual Topics getTopics()
Retrieves the list of available topics.
std::shared_ptr< IConfigurationStorage > IConfigurationStoragePtr
std::shared_ptr< IAttachStatusListener > IAttachStatusListenerPtr
virtual void removeConfigurationListener(IConfigurationReceiver &receiver)
virtual void unsubscribeFromTopic(const std::string &id, bool forceSync)
Unsubscribes from the specified optional topic to stop receiving notifications on that topic...
virtual void setAttachStatusListener(IAttachStatusListenerPtr listener)
Sets listener to notify of the current endpoint is attached/detached by another one.
std::shared_ptr< IUserAttachCallback > IUserAttachCallbackPtr
virtual void detachEndpoint(const std::string &endpointKeyHash, IDetachEndpointCallbackPtr listener=IDetachEndpointCallbackPtr())
Detaches the specified endpoint from the user to which the current endpoint is attached.
virtual void updateProfile()
Notifies server about profile changes.
virtual std::int32_t findEventListeners(const std::list< std::string > &eventFQNs, IFetchEventListenersPtr listener)
Submits an event listeners resolution request.
virtual void addNotificationListener(INotificationListener &listener)
Adds the listener which receives notifications on all available topics.
virtual void addLogRecord(const KaaUserLogRecord &record)
Adds a new log record to the log storage.
virtual IKaaDataMultiplexer & getOperationMultiplexer()
Retrieves Kaa operations data multiplexer.
std::shared_ptr< IFetchEventListeners > IFetchEventListenersPtr
std::shared_ptr< ILogUploadStrategy > ILogUploadStrategyPtr
virtual const KaaRootConfiguration & getConfiguration()
virtual const KeyPair & getClientKeyPair()
Retrieves the client's public and private key.
virtual void setFailoverStrategy(IFailoverStrategyPtr strategy)
std::shared_ptr< IAttachEndpointCallback > IAttachEndpointCallbackPtr
virtual EventFamilyFactory & getEventFamilyFactory()
std::shared_ptr< IProfileTransport > IProfileTransportPtr
virtual bool isAttachedToUser()
Checks if the current endpoint is already attached to some user.
virtual void pause()
Pauses Kaa's workflow.
std::shared_ptr< IKaaClientStateListener > IKaaClientStateListenerPtr