Class InlineBlobCache

java.lang.Object
org.firebirdsql.gds.ng.wire.InlineBlobCache
All Implemented Interfaces:
DatabaseListener, TransactionListener

@NullMarked public final class InlineBlobCache extends Object implements DatabaseListener, TransactionListener
Cache for inline blobs of a single attachment.
Since:
6.0.2
Author:
Mark Rotteveel
  • Constructor Details

    • InlineBlobCache

      public InlineBlobCache(FbDatabase database)
      Creates an inline blob cache with the maxBlobCacheSize configured for database.
      Parameters:
      database - database instance
  • Method Details

    • maxSize

      public int maxSize()
      Returns:
      the maximum cache size, -1 if the cache is disabled
    • size

      public int size()
      Returns:
      the current cache size
    • getAndRemove

      public Optional<InlineBlob> getAndRemove(FbTransaction transaction, long blobId)
      Gets an inline blob for the transaction and blob id and removes it from the cache.
      Parameters:
      transaction - transaction
      blobId - blob id
      Returns:
      inline blob or empty if not present in the cache
      See Also:
      • getAndRemove(int, long)
    • add

      public boolean add(FbTransaction transaction, InlineBlob blob)
      Adds an inline blob to the cache for the transaction and blob id.

      The inline blob is not stored in the cache if:

      If the blob is stored, this cache is added as a transaction listener of transaction.

      Parameters:
      transaction - transaction
      blob - inline blob
      Returns:
      true if the blob was added to the cache, false otherwise
    • transactionStateChanged

      public void transactionStateChanged(FbTransaction transaction, TransactionState newState, TransactionState previousState)
      Description copied from interface: TransactionListener
      Signals that the transaction state changed.
      Specified by:
      transactionStateChanged in interface TransactionListener
      Parameters:
      transaction - FbTransaction that changed state
    • detached

      public void detached(FbDatabase database)
      Description copied from interface: DatabaseListener
      Called when the database connection has been detached
      Specified by:
      detached in interface DatabaseListener
      Parameters:
      database - The database object that was detached