public class ComposedSegmentedLoadWriteStore<K,V,T extends AbstractSegmentedStoreConfiguration> extends AbstractSegmentedAdvancedLoadWriteStore<K,V>
AbstractSegmentedStoreConfiguration
.AdvancedCacheExpirationWriter.ExpirationPurgeListener<K,V>
AdvancedCacheWriter.PurgeListener<K>
Constructor and Description |
---|
ComposedSegmentedLoadWriteStore(AbstractSegmentedStoreConfiguration<T> configuration) |
Modifier and Type | Method and Description |
---|---|
void |
addSegments(IntSet segments)
Invoked when a node becomes an owner of the given segments.
|
CompletionStage<Void> |
bulkUpdate(org.reactivestreams.Publisher<MarshallableEntry<? extends K,? extends V>> publisher)
Persist all provided entries to the store in chunks, with the size of each chunk determined by the store
implementation.
|
void |
clear()
Removes all the data from the storage.
|
void |
clear(IntSet segments)
Removes all the data that maps to the given segments from the storage.
|
boolean |
contains(int segment,
Object key)
Returns true if the storage contains an entry associated with the given key in the given segment
|
boolean |
delete(int segment,
Object key)
Removes the entry for the provided key which is in the given segment.
|
void |
deleteBatch(Iterable<Object> keys)
Remove all provided keys from the store in a single batch operation.
|
org.reactivestreams.Publisher<MarshallableEntry<K,V>> |
entryPublisher(IntSet segments,
Predicate<? super K> filter,
boolean fetchValue,
boolean fetchMetadata)
Publishes all entries from this store.
|
org.reactivestreams.Publisher<MarshallableEntry<K,V>> |
entryPublisher(Predicate<? super K> filter,
boolean fetchValue,
boolean fetchMetadata)
Publishes all entries from this store.
|
void |
forEach(ObjIntConsumer<? super AdvancedLoadWriteStore> consumer)
Method that allows user to directly invoke some method(s) on the underlying store.
|
MarshallableEntry<K,V> |
get(int segment,
Object key)
Fetches an entry from the storage given a segment to optimize this lookup based on.
|
ToIntFunction<Object> |
getKeyMapper() |
void |
init(InitializationContext ctx)
Used to initialize a cache loader.
|
org.reactivestreams.Publisher<K> |
publishKeys(IntSet segments,
Predicate<? super K> filter)
Publishes all the keys that map to the given segments from this store.
|
org.reactivestreams.Publisher<K> |
publishKeys(Predicate<? super K> filter)
Publishes all the keys from this store.
|
void |
purge(Executor executor,
AdvancedCacheExpirationWriter.ExpirationPurgeListener<K,V> listener)
Using the thread in the pool, removed all the expired data from the persistence storage.
|
void |
removeSegments(IntSet segments)
Invoked when a node loses ownership of a segment.
|
int |
size()
Returns the number of elements in the store.
|
int |
size(IntSet segments)
Returns the number of elements in the store that map to the given segments that aren't expired.
|
void |
start()
Invoked on component start
|
void |
stop()
Invoked on component stop
|
void |
write(int segment,
MarshallableEntry<? extends K,? extends V> entry)
Persists the entry to the storage with the given segment to optimize future lookups.
|
contains, delete, loadEntry, write
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
destroy, isAvailable
purge
public ComposedSegmentedLoadWriteStore(AbstractSegmentedStoreConfiguration<T> configuration)
public ToIntFunction<Object> getKeyMapper()
getKeyMapper
in class AbstractSegmentedAdvancedLoadWriteStore<K,V>
public MarshallableEntry<K,V> get(int segment, Object key)
SegmentedAdvancedLoadWriteStore
MarshallableEntry
needs to be created here, InitializationContext.getMarshallableEntryFactory()
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 fetchpublic boolean contains(int segment, Object key)
SegmentedAdvancedLoadWriteStore
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 existspublic void write(int segment, MarshallableEntry<? extends K,? extends V> entry)
SegmentedAdvancedLoadWriteStore
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 storeMarshallableEntry
public boolean delete(int segment, Object key)
SegmentedAdvancedLoadWriteStore
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 removepublic int size(IntSet segments)
SegmentedAdvancedLoadWriteStore
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.public int size()
AdvancedCacheLoader
public org.reactivestreams.Publisher<K> publishKeys(IntSet segments, Predicate<? super K> filter)
SegmentedAdvancedLoadWriteStore
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 filterpublic org.reactivestreams.Publisher<K> publishKeys(Predicate<? super K> filter)
AdvancedCacheLoader
Subscriber
s as desired. Keys are not retrieved until a given Subscriber requests
them from the Subscription
.
Stores will return only non expired keys
filter
- a filter - null is treated as allowing all entriespublic org.reactivestreams.Publisher<MarshallableEntry<K,V>> entryPublisher(IntSet segments, Predicate<? super K> filter, boolean fetchValue, boolean fetchMetadata)
SegmentedAdvancedLoadWriteStore
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 entrypublic org.reactivestreams.Publisher<MarshallableEntry<K,V>> entryPublisher(Predicate<? super K> filter, boolean fetchValue, boolean fetchMetadata)
AdvancedCacheLoader
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.
filter
- a filter - null is treated as allowing all entriesfetchValue
- whether or not to fetch the value from the persistent store. E.g. if the iteration is
intended only over the key set, no point fetching the values from the persistent store as
wellfetchMetadata
- whether or not to fetch the metadata from the persistent store. E.g. if the iteration is
intended only ove the key set, then no point fetching the metadata from the persistent store
as wellpublic void clear()
AdvancedCacheWriter
public void purge(Executor executor, AdvancedCacheExpirationWriter.ExpirationPurgeListener<K,V> listener)
SegmentedAdvancedLoadWriteStore
AdvancedCacheWriter.purge(Executor, PurgeListener)
since it allows for value and metadata to be provided
which provides more accurate expiration when coordination is required.executor
- the executor to invoke the given command onlistener
- the listener that is notified for each expired entrypublic void clear(IntSet segments)
SegmentedAdvancedLoadWriteStore
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.public void deleteBatch(Iterable<Object> keys)
CacheWriter
CacheWriter.delete(Object)
.keys
- an Iterable of entry Keys to be removed from the store.public CompletionStage<Void> bulkUpdate(org.reactivestreams.Publisher<MarshallableEntry<? extends K,? extends V>> publisher)
CacheWriter
CacheWriter.write(MarshallableEntry)
.publisher
- a Publisher
of MarshallableEntry
instancespublic void init(InitializationContext ctx)
CacheLoader
PersistenceManager
when setting up cache loaders.public void start()
Lifecycle
public void stop()
Lifecycle
public void addSegments(IntSet segments)
SegmentedAdvancedLoadWriteStore
This method may be invoked irrespective if the configuration is StoreConfiguration.segmented()
or not.
segments
- segments to associate with this storepublic void removeSegments(IntSet segments)
SegmentedAdvancedLoadWriteStore
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 storepublic void forEach(ObjIntConsumer<? super AdvancedLoadWriteStore> consumer)
consumer
- callback for every store that is currently installedCopyright © 2021 JBoss by Red Hat. All rights reserved.