Changeset View
Changeset View
Standalone View
Standalone View
src/eventemitter/lagerstoreeventemitter.hpp
| Show First 20 Lines • Show All 60 Lines • ▼ Show 20 Lines | class LagerStoreEventEmitter : public EventInterface | ||||
| if (strongListener) { | if (strongListener) { | ||||
| strongListener->emit(e); | strongListener->emit(e); | ||||
| } else { | } else { | ||||
| needsCleanup = true; | needsCleanup = true; | ||||
| } | } | ||||
| } | } | ||||
| if (needsCleanup) { | if (needsCleanup) { | ||||
| std::remove_if(m_listeners.begin(), | m_listeners.erase(std::remove_if(m_listeners.begin(), | ||||
| m_listeners.end(), | m_listeners.end(), | ||||
| [](auto ptr) { | [](auto ptr) { | ||||
| return ptr.expired(); | return ptr.expired(); | ||||
| }); | }), m_listeners.end()); | ||||
| } | } | ||||
| } | } | ||||
| std::vector<ListenerWSP> m_listeners; | std::vector<ListenerWSP> m_listeners; | ||||
| }; | }; | ||||
| inline static Result update(Model, Action a) { | inline static Result update(Model, Action a) { | ||||
| ▲ Show 20 Lines • Show All 65 Lines • ▼ Show 20 Lines | public: | ||||
| */ | */ | ||||
| Watchable watchable() { | Watchable watchable() { | ||||
| return Watchable(*this); | return Watchable(*this); | ||||
| } | } | ||||
| private: | private: | ||||
| void addListener(ListenerSP listener) { | void addListener(ListenerSP listener) { | ||||
| m_postingFunc([=]() { | m_postingFunc([=, this]() { | ||||
| m_holder.m_listeners.push_back(listener); | m_holder.m_listeners.push_back(listener); | ||||
| }); | }); | ||||
| } | } | ||||
| using StoreT = | using StoreT = | ||||
| decltype(lager::make_store<Action>( | decltype(lager::make_store<Action>( | ||||
| Model{}, | Model{}, | ||||
| lager::with_manual_event_loop{}, | lager::with_manual_event_loop{}, | ||||
| Show All 11 Lines | |||||