17 #ifndef EVENTMANAGER_HPP_
18 #define EVENTMANAGER_HPP_
31 #include "kaa/gen/EndpointGen.hpp"
41 class EventManager :
public IEventManager
42 ,
public IEventListenersResolver
43 ,
public IEventDataProcessor
44 ,
public AbstractTransactable<std::list<Event> >
48 : eventTransport_(nullptr)
51 eventSequenceNumber_ = status_->getEventSequenceNumber();
54 virtual void registerEventFamily(IEventFamily* eventFamily);
56 virtual void produceEvent(
const std::string& fqn
57 ,
const std::vector<std::uint8_t>& data
58 ,
const std::string& target
61 virtual void onEventsReceived(
const EventSyncResponse::events_t& events);
62 virtual void onEventListenersReceived(
const EventSyncResponse::eventListenersResponses_t& listeners);
64 virtual std::list<Event> getPendingEvents();
66 virtual std::map<std::string, std::list<std::string> > getPendingListenerRequests() {
67 std::map<std::string, std::list<std::string> > result;
68 for (
const auto& idToFqnList : eventListenersRequests_) {
69 result.insert(std::make_pair(idToFqnList.first, idToFqnList.second->eventFQNs_));
74 virtual std::string findEventListeners(
const std::list<std::string>& eventFQNs, IFetchEventListeners* listener);
76 virtual void setTransport(EventTransport *transport) {
77 eventTransport_ = transport;
78 if (eventTransport_ !=
nullptr && (!pendingEvents_.empty() || !eventListenersRequests_.empty())) {
79 eventTransport_->sync();
93 struct EventListenersInfo {
94 std::list<std::string> eventFQNs_;
95 IFetchEventListeners* listener_;
98 void onEventFromServer(
const std::string& eventClassFQN
99 ,
const std::vector<std::uint8_t>& data
100 ,
const std::string& source);
102 void generateUniqueRequestId(std::string& requstId);
104 std::set<IEventFamily*> eventFamilies_;
105 std::list<Event> pendingEvents_;
108 std::int32_t eventSequenceNumber_;
111 EventTransport * eventTransport_;
114 std::map<std::string, std::shared_ptr<EventListenersInfo> > eventListenersRequests_;
std::shared_ptr< TransactionId > TransactionIdPtr
#define KAA_MUTEX_DECLARE(name)
std::shared_ptr< IKaaClientStateStorage > IKaaClientStateStoragePtr
virtual TransactionIdPtr beginTransaction()
virtual void rollback(TransactionIdPtr trxId)