22 #include "hazelcast/util/noop.h"
23 #include "hazelcast/client/entry_event.h"
24 #include "hazelcast/util/type_traits.h"
33 class EntryEventHandler;
57 template<
typename Handler,
58 typename = util::enable_if_rvalue_ref_trait<Handler&&>>
61 added_ = std::forward<Handler>(h);
62 add_flag(entry_event::type::ADDED);
69 template<
typename Handler,
70 typename = util::enable_if_rvalue_ref_trait<Handler&&>>
74 return std::move(*
this);
82 template<
typename Handler,
83 typename = util::enable_if_rvalue_ref_trait<Handler&&>>
86 removed_ = std::forward<Handler>(h);
87 add_flag(entry_event::type::REMOVED);
94 template<
typename Handler,
95 typename = util::enable_if_rvalue_ref_trait<Handler&&>>
99 return std::move(*
this);
107 template<
typename Handler,
108 typename = util::enable_if_rvalue_ref_trait<Handler&&>>
111 updated_ = std::forward<Handler>(h);
112 add_flag(entry_event::type::UPDATED);
119 template<
typename Handler,
120 typename = util::enable_if_rvalue_ref_trait<Handler&&>>
124 return std::move(*
this);
132 template<
typename Handler,
133 typename = util::enable_if_rvalue_ref_trait<Handler&&>>
136 evicted_ = std::forward<Handler>(h);
137 add_flag(entry_event::type::EVICTED);
144 template<
typename Handler,
145 typename = util::enable_if_rvalue_ref_trait<Handler&&>>
149 return std::move(*
this);
157 template<
typename Handler,
158 typename = util::enable_if_rvalue_ref_trait<Handler&&>>
161 expired_ = std::forward<Handler>(h);
162 add_flag(entry_event::type::EXPIRED);
169 template<
typename Handler,
170 typename = util::enable_if_rvalue_ref_trait<Handler&&>>
174 return std::move(*
this);
182 template<
typename Handler,
183 typename = util::enable_if_rvalue_ref_trait<Handler&&>>
186 merged_ = std::forward<Handler>(h);
187 add_flag(entry_event::type::MERGED);
194 template<
typename Handler,
195 typename = util::enable_if_rvalue_ref_trait<Handler&&>>
199 return std::move(*
this);
207 template<
typename Handler,
208 typename = util::enable_if_rvalue_ref_trait<Handler&&>>
211 map_evicted_ = std::forward<Handler>(h);
212 add_flag(entry_event::type::EVICT_ALL);
219 template<
typename Handler,
220 typename = util::enable_if_rvalue_ref_trait<Handler&&>>
224 return std::move(*
this);
232 template<
typename Handler,
233 typename = util::enable_if_rvalue_ref_trait<Handler&&>>
236 map_cleared_ = std::forward<Handler>(h);
237 add_flag(entry_event::type::CLEAR_ALL);
244 template<
typename Handler,
245 typename = util::enable_if_rvalue_ref_trait<Handler&&>>
249 return std::move(*
this);
253 using EntryHandlerType = std::function<void(
entry_event&&)>;
254 EntryHandlerType added_ = util::noop<entry_event&&>,
255 removed_ = util::noop<entry_event&&>,
256 updated_ = util::noop<entry_event&&>,
257 evicted_ = util::noop<entry_event&&>,
258 expired_ = util::noop<entry_event&&>,
259 merged_ = util::noop<entry_event&&>;
261 using MapHandlerType = std::function<void(
map_event&&)>;
262 MapHandlerType map_evicted_ = util::noop<map_event&&>,
263 map_cleared_ = util::noop<map_event&&>;
267 void add_flag(entry_event::type t) { flags_ |=
static_cast<int32_t
>(t); }
270 friend class impl::EntryEventHandler;
271 friend class replicated_map;
Map entry listener to get notified when a map entry is added, removed, updated, evicted,...
entry_listener && on_removed(Handler &&h) &&
Set an handler function to be invoked when an entry is removed.
entry_listener && on_map_evicted(Handler &&h) &&
Set an handler function to be invoked when all entries are evicted by imap::evict_all.
entry_listener && on_added(Handler &&h) &&
Set an handler function to be invoked when an entry is added.
entry_listener & on_evicted(Handler &&h) &
Set an handler function to be invoked when an entry is evicted.
entry_listener && on_merged(Handler &&h) &&
Set an handler function to be invoked after a WAN replicated entry is merged.
entry_listener & on_updated(Handler &&h) &
Set an handler function to be invoked when an entry is updated.
entry_listener && on_evicted(Handler &&h) &&
Set an handler function to be invoked when an entry is evicted.
entry_listener && on_map_cleared(Handler &&h) &&
Set an handler function to be invoked when all entries are removed by imap::clear.
entry_listener & on_merged(Handler &&h) &
Set an handler function to be invoked after a WAN replicated entry is merged.
entry_listener && on_expired(Handler &&h) &&
Set an handler function to be invoked when an entry is expired.
entry_listener && on_updated(Handler &&h) &&
Set an handler function to be invoked when an entry is updated.
entry_listener & on_map_cleared(Handler &&h) &
Set an handler function to be invoked when all entries are removed by imap::clear.
entry_listener & on_expired(Handler &&h) &
Set an handler function to be invoked when an entry is expired.
entry_listener & on_map_evicted(Handler &&h) &
Set an handler function to be invoked when all entries are evicted by imap::evict_all.
entry_listener & on_added(Handler &&h) &
Set an handler function to be invoked when an entry is added.
entry_listener & on_removed(Handler &&h) &
Set an handler function to be invoked when an entry is removed.
Map events common contract.