22 #include "hazelcast/util/noop.h"
23 #include "hazelcast/client/entry_event.h"
24 #include "hazelcast/util/type_traits.h"
32 template<
typename>
class EntryEventHandler;
56 template<
typename Handler,
57 typename = util::enable_if_rvalue_ref_t<Handler &&>>
59 added_ = std::forward<Handler>(h);
60 add_flag(entry_event::type::ADDED);
67 template<
typename Handler,
68 typename = util::enable_if_rvalue_ref_t<Handler &&>>
71 return std::move(*
this);
79 template<
typename Handler,
80 typename = util::enable_if_rvalue_ref_t<Handler &&>>
82 removed_ = std::forward<Handler>(h);
83 add_flag(entry_event::type::REMOVED);
90 template<
typename Handler,
91 typename = util::enable_if_rvalue_ref_t<Handler &&>>
94 return std::move(*
this);
102 template<
typename Handler,
103 typename = util::enable_if_rvalue_ref_t<Handler &&>>
105 updated_ = std::forward<Handler>(h);
106 add_flag(entry_event::type::UPDATED);
113 template<
typename Handler,
114 typename = util::enable_if_rvalue_ref_t<Handler &&>>
117 return std::move(*
this);
125 template<
typename Handler,
126 typename = util::enable_if_rvalue_ref_t<Handler &&>>
128 evicted_ = std::forward<Handler>(h);
129 add_flag(entry_event::type::EVICTED);
136 template<
typename Handler,
137 typename = util::enable_if_rvalue_ref_t<Handler &&>>
140 return std::move(*
this);
148 template<
typename Handler,
149 typename = util::enable_if_rvalue_ref_t<Handler &&>>
151 expired_ = std::forward<Handler>(h);
152 add_flag(entry_event::type::EXPIRED);
159 template<
typename Handler,
160 typename = util::enable_if_rvalue_ref_t<Handler &&>>
163 return std::move(*
this);
171 template<
typename Handler,
172 typename = util::enable_if_rvalue_ref_t<Handler &&>>
174 merged_ = std::forward<Handler>(h);
175 add_flag(entry_event::type::MERGED);
182 template<
typename Handler,
183 typename = util::enable_if_rvalue_ref_t<Handler &&>>
186 return std::move(*
this);
194 template<
typename Handler,
195 typename = util::enable_if_rvalue_ref_t<Handler &&>>
197 map_evicted_ = std::forward<Handler>(h);
198 add_flag(entry_event::type::EVICT_ALL);
205 template<
typename Handler,
206 typename = util::enable_if_rvalue_ref_t<Handler &&>>
209 return std::move(*
this);
217 template<
typename Handler,
218 typename = util::enable_if_rvalue_ref_t<Handler &&>>
220 map_cleared_ = std::forward<Handler>(h);
221 add_flag(entry_event::type::CLEAR_ALL);
228 template<
typename Handler,
229 typename = util::enable_if_rvalue_ref_t<Handler &&>>
232 return std::move(*
this);
236 using EntryHandlerType = std::function<void(
entry_event &&)>;
237 EntryHandlerType added_ = util::noop<entry_event &&>,
238 removed_ = util::noop<entry_event &&>,
239 updated_ = util::noop<entry_event &&>,
240 evicted_ = util::noop<entry_event &&>,
241 expired_ = util::noop<entry_event &&>,
242 merged_ = util::noop<entry_event &&>;
244 using MapHandlerType = std::function<void(
map_event &&)>;
245 MapHandlerType map_evicted_ = util::noop<map_event &&>,
246 map_cleared_ = util::noop<map_event &&>;
250 void add_flag(entry_event::type t) {
251 flags_ |=
static_cast<int32_t
>(t);
255 friend class impl::EntryEventHandler;
256 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.