package com.adlerosn.brasilfurfest.schedule.managers import android.content.Context import java.io.File import java.io.InputStream import java.io.Serializable abstract class CacheManager : Serializable { abstract val goesOnline: Boolean abstract val preloaded: Boolean abstract fun getStamp(file: String): String? abstract operator fun get(file: String): Pair? abstract operator fun set(file: String, requestResult: Pair) abstract fun delete(file: String): Boolean abstract fun sanitize(): Int abstract val files: Set abstract fun startMonitoringNeededFiles() abstract fun removeNotNeededFiles(): Int abstract fun getFileFor(asset: String): File companion object { operator fun invoke(context: Context) = if(RemoteAssets.onlineApp) { if (RemoteAssets.preloaded) OnlinePreloadedCacheManager(context) else OnlineCacheManager(context) } else OfflineCacheManager(context) } }