17 #ifndef EVENTMANAGER_HPP_
18 #define EVENTMANAGER_HPP_
23 #include <boost/cstdint.hpp>
24 #include <boost/shared_ptr.hpp>
25 #include <boost/scoped_ptr.hpp>
26 #include <boost/thread/mutex.hpp>
28 #include "kaa/gen/EndpointGen.hpp"
45 : eventTransport_(nullptr)
48 eventSequenceNumber_ = status_->getEventSequenceNumber();
54 ,
const std::vector<boost::uint8_t>& data
55 ,
const std::string& target);
63 std::map<std::string, std::list<std::string> > result;
64 for (
const auto& idToFqnList : eventListenersRequests_) {
65 result.insert(std::make_pair(idToFqnList.first, idToFqnList.second->eventFQNs_));
73 eventTransport_ = transport;
74 if (eventTransport_ !=
nullptr && (!pendingEvents_.empty() || !eventListenersRequests_.empty())) {
75 eventTransport_->
sync();
79 struct EventListenersInfo {
80 std::list<std::string> eventFQNs_;
84 void onEventFromServer(
const std::string& eventClassFQN
85 ,
const std::vector<boost::uint8_t>& data
86 ,
const std::string& source);
89 void generateUniqueRequestId(std::string& requstId);
91 typedef boost::mutex mutex_type;
92 typedef boost::unique_lock<mutex_type> lock_type;
94 std::set<IEventFamily*> eventFamilies_;
95 std::list<Event> pendingEvents_;
96 mutex_type pendingEventsGuard_;
98 boost::int32_t eventSequenceNumber_;
99 mutex_type sequenceGuard_;
101 EventTransport * eventTransport_;
104 std::map<std::string, boost::shared_ptr<EventListenersInfo> > eventListenersRequests_;
virtual void setTransport(EventTransport *transport)
virtual std::map< std::string, std::list< std::string > > getPendingListenerRequests()
virtual void produceEvent(const std::string &fqn, const std::vector< boost::uint8_t > &data, const std::string &target)
boost::shared_ptr< IKaaClientStateStorage > IKaaClientStateStoragePtr
virtual std::string findEventListeners(const std::list< std::string > &eventFQNs, IFetchEventListeners *listener)
EventManager(IKaaClientStateStoragePtr status)
virtual void registerEventFamily(IEventFamily *eventFamily)
virtual void onEventsReceived(const EventSyncResponse::events_t &events)
virtual std::list< Event > getPendingEvents()
virtual void onEventListenersReceived(const EventSyncResponse::eventListenersResponses_t &listeners)