@ThreadSafe public interface SegmentedAdvancedLoadWriteStore<K,V> extends AdvancedLoadWriteStore<K,V>
AdvancedCacheWriter
and AdvancedCacheLoader
as well as overrides
of those methods that can be optimized when a segment is already known for the key or a subset of segments are to
be used instead of the entire store.
Various methods on this interface may be invoked even if the store is configured as being segmented. That is whether
the configuration is true for StoreConfiguration.segmented()
. Each method is documented as to if this
can occur or not.
AdvancedCacheLoader.CacheLoaderTask<K,V>, AdvancedCacheLoader.TaskContext
AdvancedCacheWriter.PurgeListener<K>
Modifier and Type | Method and Description |
---|---|
default void |
addSegments(IntSet segments)
Invoked when a node becomes an owner of the given segments.
|
void |
clear(IntSet segments)
Removes all the data that maps to the given segments from the storage.
|
default boolean |
contains(int segment,
Object key)
Returns true if the storage contains an entry associated with the given key in the given segment
|
default boolean |
delete(int segment,
Object key)
Removes the entry for the provided key which is in the given segment.
|
default MarshalledEntry<K,V> |
load(int segment,
Object key)
Fetches an entry from the storage given a segment to optimize this lookup based on.
|
org.reactivestreams.Publisher<MarshalledEntry<K,V>> |
publishEntries(IntSet segments,
Predicate<? super K> filter,
boolean fetchValue,
boolean fetchMetadata)
Publishes all entries from this store.
|
org.reactivestreams.Publisher<K> |
publishKeys(IntSet segments,
Predicate<? super K> filter)
Publishes all the keys that map to the given segments from this store.
|
default void |
removeSegments(IntSet segments)
Invoked when a node loses ownership of a segment.
|
int |
size(IntSet segments)
Returns the number of elements in the store that map to the given segments that aren't expired.
|
default void |
write(int segment,
MarshalledEntry<? extends K,? extends V> entry)
Persists the entry to the storage with the given segment to optimize further lookups based on
|
destroy, isAvailable
process, publishEntries, publishKeys, size
contains, init, load
clear, purge
delete, deleteBatch, init, write, writeBatch
default MarshalledEntry<K,V> load(int segment, Object key)
MarshalledEntry
needs to be created here, InitializationContext.getMarshalledEntryFactory()
and
InitializationContext.getByteBufferFactory()
should be used.
The provided segment may be used for performance purposes, however it it is acceptable to ignore this argument.
This method may be invoked invoked irrespective if the store is StoreConfiguration.segmented()
.
segment
- the segment that the key maps tokey
- the key of the entry to fetchPersistenceException
- in case of an error, e.g. communicating with the external storagedefault boolean contains(int segment, Object key)
The provided segment may be used for performance purposes, however it it is acceptable to ignore this argument.
This method may be invoked invoked irrespective if the store is StoreConfiguration.segmented()
.
segment
- the segment that the key maps tokey
- the key to see if existsPersistenceException
- in case of an error, e.g. communicating with the external storagedefault void write(int segment, MarshalledEntry<? extends K,? extends V> entry)
The provided segment may be used for performance purposes, however it it is acceptable to ignore this argument.
This method may be invoked invoked irrespective if the store is StoreConfiguration.segmented()
.
segment
- the segment to persist this entry toentry
- the entry to write to the storePersistenceException
- in case of an error, e.g. communicating with the external storageMarshalledEntry
default boolean delete(int segment, Object key)
The provided segment may be used for performance purposes, however it it is acceptable to ignore this argument.
This method may be invoked invoked irrespective if the store is StoreConfiguration.segmented()
.
segment
- the segment that this key maps tokey
- the key of the entry to removePersistenceException
- in case of an error, e.g. communicating with the external storageint size(IntSet segments)
The segments here must be adhered to and the size must not count any entries that don't belong to the provided segments.
This method is not invoked invoked when the store is not configured to be StoreConfiguration.segmented()
.
segments
- the segments which should have their entries counted. Always non null.PersistenceException
- in case of an error, e.g. communicating with the external storageorg.reactivestreams.Publisher<K> publishKeys(IntSet segments, Predicate<? super K> filter)
Subscriber
s as desired. Keys are not retrieved until a given Subscriber requests
them from the Subscription
.
Stores will return only non expired keys
The segments here must be adhered to and the keys published must not include any that don't belong to the provided segments.
This method is not invoked invoked when the store is not configured to be StoreConfiguration.segmented()
.
segments
- the segments that the keys must map to. Always non null.filter
- a filterorg.reactivestreams.Publisher<MarshalledEntry<K,V>> publishEntries(IntSet segments, Predicate<? super K> filter, boolean fetchValue, boolean fetchMetadata)
Subscriber
s as desired. Entries are not retrieved until a given Subscriber requests
them from the Subscription
.
If fetchMetadata is true this store must guarantee to not return any expired entries.
The segments here must be adhered to and the entries published must not include any that don't belong to the provided segments.
This method is not invoked invoked when the store is not configured to be StoreConfiguration.segmented()
.
StoreConfiguration.segmented()
.
segments
- the segments that the keys of the entries must map to. Always non null.filter
- a filter on the keys of the entries that if passed will allow the given entry to be returned from the publisherfetchValue
- whether the value should be included in the marshalled entryfetchMetadata
- whether the metadata should be included in the marshalled entryvoid clear(IntSet segments)
This method must only remove entries that map to the provided segments.
This method may be invoked irrespective if the configuration is StoreConfiguration.segmented()
or not.
segments
- data mapping to these segments are removed. Always non null.PersistenceException
- in case of an error, e.g. communicating with the external storagedefault void addSegments(IntSet segments)
This method may be invoked irrespective if the configuration is StoreConfiguration.segmented()
or not.
segments
- segments to associate with this storedefault void removeSegments(IntSet segments)
This method may be invoked irrespective if the configuration is StoreConfiguration.segmented()
or not.
StoreConfiguration.segmented()
.
segments
- segments that should no longer be associated with this storeCopyright © 2019 JBoss, a division of Red Hat. All rights reserved.