17 #ifndef ENDPOINTREGISTRATIONMANAGER_HPP_
18 #define ENDPOINTREGISTRATIONMANAGER_HPP_
24 #include <boost/signals2.hpp>
25 #include <boost/shared_ptr.hpp>
26 #include <boost/thread/recursive_mutex.hpp>
39 class UserAttachRequest;
40 class IAttachedEndpointListListener;
51 return endpointAccessToken_;
62 virtual void attachUser(
const std::string& userExternalId
63 ,
const std::string& userAccessToken
76 virtual void onUserAttach(
const UserSyncResponse::userAttachResponse_t& response);
78 virtual void onEndpointsAttach(
const std::vector<EndpointAttachResponse>& endpoints);
79 virtual void onEndpointsDetach(
const std::vector<EndpointDetachResponse>& endpoints);
85 return status_->getEndpointAttachStatus();
89 userTransport_ = transport;
90 if (userTransport_ !=
nullptr && (userAttachRequest_.get() !=
nullptr || !attachingEndpoints_.empty() || !detachingEndpoints_.empty())) {
91 userTransport_->
sync();
96 if (listener !=
nullptr) {
97 attachStatusListener_ = listener;
102 void onEndpointAccessTokenChanged(
const std::string& old);
105 struct EndpointOperationInfo {
106 std::string endpointData_;
112 typedef boost::recursive_mutex mutex_type;
113 typedef boost::unique_lock<mutex_type> lock_type;
117 std::string endpointAccessToken_;
118 std::string endpointKeyHash_;
122 std::map<std::string, EndpointOperationInfo> attachingEndpoints_;
123 std::map<std::string, EndpointOperationInfo> detachingEndpoints_;
124 std::map<std::string, std::string> attachedEndpoints_;
125 mutex_type endpointsGuard_;
127 UserTransport * userTransport_;
129 boost::signals2::signal<void (const AttachedEndpoints&)> attachedEPListListeners;
130 mutex_type listenerGuard_;
132 IEndpointAttachStatusListener* attachStatusListener_;
virtual void onEndpointsDetach(const std::vector< EndpointDetachResponse > &endpoints)
virtual void onCurrentEndpointDetach(const UserDetachNotification &response)
std::map< std::string, std::string > AttachedEndpoints
virtual void detachEndpoint(const std::string &endpointKeyHash, IEndpointAttachStatusListener *listener=nullptr)
boost::shared_ptr< IKaaClientStateStorage > IKaaClientStateStoragePtr
virtual const AttachedEndpoints & getAttachedEndpoints()
virtual void setAttachStatusListener(IEndpointAttachStatusListener *listener)
EndpointRegistrationManager(IKaaClientStateStoragePtr status)
virtual void onEndpointsAttach(const std::vector< EndpointAttachResponse > &endpoints)
boost::shared_ptr< UserAttachRequest > UserAttachRequestPtr
virtual std::map< std::string, std::string > getEndpointsToDetach()
virtual void addAttachedEndpointListListener(IAttachedEndpointListListener *listener)
virtual void onCurrentEndpointAttach(const UserAttachNotification &response)
virtual void removeAttachedEndpointListListener(IAttachedEndpointListListener *listener)
virtual void attachUser(const std::string &userExternalId, const std::string &userAccessToken, IEndpointAttachStatusListener *listener=nullptr)
virtual void regenerateEndpointAccessToken()
virtual void setTransport(UserTransport *transport)
virtual void onUserAttach(const UserSyncResponse::userAttachResponse_t &response)
virtual void attachEndpoint(const std::string &endpointAccessToken, IEndpointAttachStatusListener *listener=nullptr)
virtual bool isCurrentEndpointAttached()
virtual const std::string & getEndpointAccessToken()
virtual UserAttachRequestPtr getUserAttachRequest()
virtual std::map< std::string, std::string > getEndpointsToAttach()