16 #ifndef HAZELCAST_MULTI_MAP 17 #define HAZELCAST_MULTI_MAP 22 #include "hazelcast/client/proxy/MultiMapImpl.h" 23 #include "hazelcast/client/impl/EntryEventHandler.h" 24 #include "hazelcast/client/protocol/codec/MultiMapAddEntryListenerCodec.h" 25 #include "hazelcast/client/protocol/codec/MultiMapAddEntryListenerToKeyCodec.h" 30 template <
typename K,
typename V>
31 class RawPointerMultiMap;
39 template<
typename K,
typename V>
41 friend class impl::HazelcastClientInstanceImpl;
54 bool put(
const K &key,
const V &value) {
55 return proxy::MultiMapImpl::put(toData(key), toData(value));
64 std::vector<V>
get(
const K &key) {
65 return toObjectCollection<V>(proxy::MultiMapImpl::getData(toData(key)));
75 bool remove(
const K &key,
const V &value) {
76 return proxy::MultiMapImpl::remove(toData(key), toData(value));
86 std::vector<V>
remove(
const K &key) {
87 return toObjectCollection<V>(proxy::MultiMapImpl::removeData(toData(key)));
97 return toObjectCollection<K>(proxy::MultiMapImpl::keySetData());
107 return toObjectCollection<V>(proxy::MultiMapImpl::valuesData());
117 return toObjectEntrySet<K, V>(proxy::MultiMapImpl::entrySetData());
127 return proxy::MultiMapImpl::containsKey(toData(key));
137 return proxy::MultiMapImpl::containsValue(toData(value));
148 return proxy::MultiMapImpl::containsEntry(toData(key), toData(value));
157 return proxy::MultiMapImpl::size();
164 proxy::MultiMapImpl::clear();
175 return proxy::MultiMapImpl::valueCount(toData(key));
193 spi::ClientClusterService &clusterService = getContext().getClientClusterService();
194 serialization::pimpl::SerializationService &ss = getContext().getSerializationService();
195 impl::EntryEventHandler<K, V, protocol::codec::MultiMapAddEntryListenerCodec::AbstractEventHandler> *entryEventHandler =
196 new impl::EntryEventHandler<K, V, protocol::codec::MultiMapAddEntryListenerCodec::AbstractEventHandler>(
197 getName(), clusterService, ss, listener, includeValue);
198 return proxy::MultiMapImpl::addEntryListener(entryEventHandler, includeValue);
218 impl::EntryEventHandler<K, V, protocol::codec::MultiMapAddEntryListenerToKeyCodec::AbstractEventHandler> *entryEventHandler =
219 new impl::EntryEventHandler<K, V, protocol::codec::MultiMapAddEntryListenerToKeyCodec::AbstractEventHandler>(
220 getName(), getContext().getClientClusterService(), getContext().getSerializationService(), listener,
222 serialization::pimpl::Data keyData = toData(key);
223 return proxy::MultiMapImpl::addEntryListener(entryEventHandler, keyData, includeValue);
235 return proxy::MultiMapImpl::removeEntryListener(registrationId);
254 proxy::MultiMapImpl::lock(toData(key));
273 void lock(
const K &key,
long leaseTimeInMillis) {
274 proxy::MultiMapImpl::lock(toData(key), leaseTimeInMillis);
285 return proxy::MultiMapImpl::isLocked(toData(key));
298 return proxy::MultiMapImpl::tryLock(toData(key));
317 bool tryLock(
const K &key,
long timeoutInMillis) {
318 return proxy::MultiMapImpl::tryLock(toData(key), timeoutInMillis);
329 proxy::MultiMapImpl::unlock(toData(key));
339 proxy::MultiMapImpl::forceUnlock(toData(key));
343 MultiMap(
const std::string &instanceName, spi::ClientContext *context)
344 : proxy::MultiMapImpl(instanceName, context) {
std::vector< std::pair< K, V > > entrySet()
Returns the set of key-value pairs in the multimap.
Definition: MultiMap.h:116
Map Entry listener to get notified when a map entry is added, removed, updated or evicted...
Definition: EntryListener.h:45
void lock(const K &key, long leaseTimeInMillis)
Acquires the lock for the specified key for the specified lease time.
Definition: MultiMap.h:273
void lock(const K &key)
Acquires the lock for the specified key.
Definition: MultiMap.h:253
bool tryLock(const K &key, long timeoutInMillis)
Tries to acquire the lock for the specified key.
Definition: MultiMap.h:317
bool isLocked(const K &key)
Checks the lock for the specified key.
Definition: MultiMap.h:284
int size()
Returns the number of key-value pairs in the multimap.
Definition: MultiMap.h:156
std::string addEntryListener(EntryListener< K, V > &listener, bool includeValue)
Adds an entry listener for this multimap.
Definition: MultiMap.h:192
std::vector< K > keySet()
Returns the set of keys in the multimap.
Definition: MultiMap.h:96
int valueCount(const K &key)
Returns number of values matching to given key in the multimap.
Definition: MultiMap.h:174
A specialized distributed map client whose keys can be associated with multiple values.
Definition: MultiMap.h:40
bool tryLock(const K &key)
Tries to acquire the lock for the specified key.
Definition: MultiMap.h:297
bool containsValue(const V &value)
Returns whether the multimap contains an entry with the value.
Definition: MultiMap.h:136
void clear()
Clears the multimap.
Definition: MultiMap.h:163
std::string addEntryListener(EntryListener< K, V > &listener, const K &key, bool includeValue)
Adds the specified entry listener for the specified key.
Definition: MultiMap.h:217
bool put(const K &key, const V &value)
Stores a key-value pair in the multimap.
Definition: MultiMap.h:54
bool containsKey(const K &key)
Returns whether the multimap contains an entry with the key.
Definition: MultiMap.h:126
std::vector< V > values()
Returns the multimap of values in the multimap.
Definition: MultiMap.h:106
void forceUnlock(const K &key)
Releases the lock for the specified key regardless of the lock owner.
Definition: MultiMap.h:338
void unlock(const K &key)
Releases the lock for the specified key.
Definition: MultiMap.h:328
bool removeEntryListener(const std::string ®istrationId)
Removes the specified entry listener Returns silently if there is no such listener added before...
Definition: MultiMap.h:234
A specialized distributed map client whose keys can be associated with multiple values.
Definition: RawPointerMultiMap.h:32
PN (Positive-Negative) CRDT counter.
Definition: MapEntryView.h:32
bool containsEntry(const K &key, const V &value)
Returns whether the multimap contains the given key-value pair.
Definition: MultiMap.h:147