ContentEntry

interface ContentEntry

Unified "one cached layer's content" view — size on disk, last-modified, clear/delete.

Implemented by:

  • Self-contained file-format tile factories (MBTileFactory, RMapsTileFactory, ATAKTileFactory) where every operation is local to a single file.

  • The ContentManager-backed adapter returned by ContentManager.contentEntry for GPKG / IndexedDB / filesystem-cached layers where the catalog row lives in a ContentManager and ops fan out to its findEntry / sizeBytesOf / clearEntry / deleteEntry.

App-side wrappers (display name, "size on disk" UI, "clear cache" buttons) can dispatch generically against this surface instead of when (tileFactory) { is MBTile -> ... is RMaps -> ... else -> contentManager?.findEntry(key)?.lastModified }.

Mirrors the pre-refactor CacheableImageLayer surface area (contentKey, contentPath, lastModifiedDate, cacheContentSize, clearCache) but is plain — no Layer inheritance — so layer-typed and file-factory-typed code share one interface.

Inheritors

ATAKTileFactory
MBTileFactory
RMapsTileFactory

Properties

Link copied to clipboard
abstract val contentKey: String
Link copied to clipboard
abstract val contentPath: String

Functions

Link copied to clipboard
abstract suspend fun clearEntry(deleteMetadata: Boolean = false)

Clear cached tiles for this entry. With deleteMetadata = true, also drop the service-identity row (and, for file-format factories, the underlying file) so the entry is gone for good. With false (default), the registration / catalog row survives so re-download repopulates the same layer without re-configuration.

Link copied to clipboard
abstract suspend fun contentSize(): Long
Link copied to clipboard
abstract suspend fun lastModifiedDate(): Instant?
Link copied to clipboard
open suspend fun setDisplayName(displayName: String)

Persist a user-visible name for this entry. Writes through to the underlying catalog row when the implementation has one (ContentManager-backed entries); no-op for self-contained file formats (MBTiles / RMaps / ATAK / Kropyva) where the display name lives inside the immutable package and can't be reassigned from outside.