Class ComposedSegmentedLoadWriteStore<K,​V,​T extends AbstractSegmentedStoreConfiguration>

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addSegments​(IntSet segments)
      Invoked when a node becomes an owner of the given segments.
      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, java.lang.Object key)
      Returns true if the storage contains an entry associated with the given key in the given segment
      boolean delete​(int segment, java.lang.Object key)
      Removes the entry for the provided key which is in the given segment.
      void deleteBatch​(java.lang.Iterable<java.lang.Object> keys)
      Remove all provided keys from the store in a single batch operation.
      void forEach​(java.util.function.ObjIntConsumer<? super AdvancedLoadWriteStore> consumer)
      Method that allows user to directly invoke some method(s) on the underlying store.
      java.util.function.ToIntFunction<java.lang.Object> getKeyMapper()  
      void init​(InitializationContext ctx)
      Used to initialize a cache loader.
      MarshalledEntry<K,​V> load​(int segment, java.lang.Object key)
      Fetches an entry from the storage given a segment to optimize this lookup based on.
      org.reactivestreams.Publisher<MarshalledEntry<K,​V>> publishEntries​(java.util.function.Predicate<? super K> filter, boolean fetchValue, boolean fetchMetadata)
      Publishes all entries from this store.
      org.reactivestreams.Publisher<MarshalledEntry<K,​V>> publishEntries​(IntSet segments, java.util.function.Predicate<? super K> filter, boolean fetchValue, boolean fetchMetadata)
      Publishes all entries from this store.
      io.reactivex.Flowable<K> publishKeys​(java.util.function.Predicate<? super K> filter)
      Publishes all the keys from this store.
      io.reactivex.Flowable<K> publishKeys​(IntSet segments, java.util.function.Predicate<? super K> filter)
      Publishes all the keys that map to the given segments from this store.
      void purge​(java.util.concurrent.Executor threadPool, AdvancedCacheWriter.PurgeListener<? super K> 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, MarshalledEntry<? extends K,​? extends V> entry)
      Persists the entry to the storage with the given segment to optimize further lookups based on
      void writeBatch​(java.lang.Iterable<MarshalledEntry<? extends K,​? extends V>> marshalledEntries)
      Persist all provided entries to the store in a single batch update.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • contains

        public boolean contains​(int segment,
                                java.lang.Object key)
        Description copied from interface: SegmentedAdvancedLoadWriteStore
        Returns true if the storage contains an entry associated with the given key in the given segment

        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().

        Parameters:
        segment - the segment that the key maps to
        key - the key to see if exists
        Returns:
        true if the key is present in this loader with a given segment
      • write

        public void write​(int segment,
                          MarshalledEntry<? extends K,​? extends V> entry)
        Description copied from interface: SegmentedAdvancedLoadWriteStore
        Persists the entry to the storage with the given segment to optimize further lookups based on

        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().

        Parameters:
        segment - the segment to persist this entry to
        entry - the entry to write to the store
        See Also:
        MarshalledEntry
      • delete

        public boolean delete​(int segment,
                              java.lang.Object key)
        Description copied from interface: SegmentedAdvancedLoadWriteStore
        Removes the entry for the provided key which is in the given segment. This method then returns whether the entry was removed or not.

        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().

        Parameters:
        segment - the segment that this key maps to
        key - the key of the entry to remove
        Returns:
        true if the entry existed in the persistent store and it was deleted.
      • size

        public int size​(IntSet segments)
        Description copied from interface: SegmentedAdvancedLoadWriteStore
        Returns the number of elements in the store that map to the given segments that aren't expired.

        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().

        Parameters:
        segments - the segments which should have their entries counted. Always non null.
        Returns:
        the count of entries in the given segments
      • size

        public int size()
        Description copied from interface: AdvancedCacheLoader
        Returns the number of elements in the store.
      • publishKeys

        public io.reactivex.Flowable<K> publishKeys​(IntSet segments,
                                                    java.util.function.Predicate<? super K> filter)
        Description copied from interface: SegmentedAdvancedLoadWriteStore
        Publishes all the keys that map to the given segments from this store. The given publisher can be used by as many Subscribers 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().

        Parameters:
        segments - the segments that the keys must map to. Always non null.
        filter - a filter
        Returns:
        a publisher that will provide the keys from the store
      • publishKeys

        public io.reactivex.Flowable<K> publishKeys​(java.util.function.Predicate<? super K> filter)
        Description copied from interface: AdvancedCacheLoader
        Publishes all the keys from this store. The given publisher can be used by as many Subscribers as desired. Keys are not retrieved until a given Subscriber requests them from the Subscription.

        Stores will return only non expired keys

        Parameters:
        filter - a filter - null is treated as allowing all entries
        Returns:
        a publisher that will provide the keys from the store
      • publishEntries

        public org.reactivestreams.Publisher<MarshalledEntry<K,​V>> publishEntries​(IntSet segments,
                                                                                        java.util.function.Predicate<? super K> filter,
                                                                                        boolean fetchValue,
                                                                                        boolean fetchMetadata)
        Description copied from interface: SegmentedAdvancedLoadWriteStore
        Publishes all entries from this store. The given publisher can be used by as many Subscribers 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().

        Parameters:
        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 publisher
        fetchValue - whether the value should be included in the marshalled entry
        fetchMetadata - whether the metadata should be included in the marshalled entry
        Returns:
        a publisher that will provide the entries from the store that map to the given segments
      • publishEntries

        public org.reactivestreams.Publisher<MarshalledEntry<K,​V>> publishEntries​(java.util.function.Predicate<? super K> filter,
                                                                                        boolean fetchValue,
                                                                                        boolean fetchMetadata)
        Description copied from interface: AdvancedCacheLoader
        Publishes all entries from this store. The given publisher can be used by as many Subscribers 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.

        Parameters:
        filter - a filter - null is treated as allowing all entries
        fetchValue - 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 well
        fetchMetadata - 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 well
        Returns:
        a publisher that will provide the entries from the store
      • clear

        public void clear()
        Description copied from interface: AdvancedCacheWriter
        Removes all the data from the storage.
      • purge

        public void purge​(java.util.concurrent.Executor threadPool,
                          AdvancedCacheWriter.PurgeListener<? super K> listener)
        Description copied from interface: AdvancedCacheWriter
        Using the thread in the pool, removed all the expired data from the persistence storage. For each removed entry, the supplied listener is invoked.

        When this method returns all entries will be purged and no tasks will be running due to this loader in the provided executor. If however an exception is thrown there could be tasks still pending or running in the executor.

      • clear

        public void clear​(IntSet segments)
        Description copied from interface: SegmentedAdvancedLoadWriteStore
        Removes all the data that maps to the given segments from the storage.

        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.

        Parameters:
        segments - data mapping to these segments are removed. Always non null.
      • deleteBatch

        public void deleteBatch​(java.lang.Iterable<java.lang.Object> keys)
        Description copied from interface: CacheWriter
        Remove all provided keys from the store in a single batch operation. If this is not supported by the underlying store, then keys are removed from the store individually via CacheWriter.delete(Object).
        Parameters:
        keys - an Iterable of entry Keys to be removed from the store.
      • writeBatch

        public void writeBatch​(java.lang.Iterable<MarshalledEntry<? extends K,​? extends V>> marshalledEntries)
        Description copied from interface: CacheWriter
        Persist all provided entries to the store in a single batch update. If this is not supported by the underlying store, then entries are written to the store individually via CacheWriter.write(MarshalledEntry).
        Parameters:
        marshalledEntries - an Iterable of MarshalledEntry to be written to the store.
      • start

        public void start()
        Description copied from interface: Lifecycle
        Invoked on component start
      • stop

        public void stop()
        Description copied from interface: Lifecycle
        Invoked on component stop
      • addSegments

        public void addSegments​(IntSet segments)
        Description copied from interface: SegmentedAdvancedLoadWriteStore
        Invoked when a node becomes an owner of the given segments. Note this method is only invoked for non shared store implementations.

        This method may be invoked irrespective if the configuration is StoreConfiguration.segmented() or not.

        Parameters:
        segments - segments to associate with this store
      • removeSegments

        public void removeSegments​(IntSet segments)
        Description copied from interface: SegmentedAdvancedLoadWriteStore
        Invoked when a node loses ownership of a segment. The provided segments are the ones this node no longer owns. Note this method is only invoked for non shared store implementations.

        This method may be invoked irrespective if the configuration is StoreConfiguration.segmented() or not. StoreConfiguration.segmented().

        Parameters:
        segments - segments that should no longer be associated with this store
      • forEach

        public void forEach​(java.util.function.ObjIntConsumer<? super AdvancedLoadWriteStore> consumer)
        Method that allows user to directly invoke some method(s) on the underlying store. The segment that each store maps to is also provided as an argument to the consumer
        Parameters:
        consumer - callback for every store that is currently installed