in core/src/main/java/com/epam/coroutinecache/internal/ProcessorProviderImpl.kt [25:44]
override suspend fun <T> process(cacheObjectParams: CacheObjectParams?): T? {
if (cacheObjectParams == null) return null
val record = getRecordAction.getRecord<T>(cacheObjectParams.key, cacheObjectParams.entryType!!, cacheObjectParams.useIfExpired)
return if (record == null) {
deleteRecordAction.deleteByKey(cacheObjectParams.key)
val data = cacheObjectParams.dataProvider?.getData() as T?
saveRecordAction
.save(cacheObjectParams.key,
data,
cacheObjectParams.entryType!!,
cacheObjectParams.timeUnit.toMillis(cacheObjectParams.lifeTime),
cacheObjectParams.isExpirable)
.await()
CacheLog.logMessage("Got data from source: ${Source.CLOUD}")
data
} else {
CacheLog.logMessage("Got data from source: ${record.getSource()}")
record.getData()
}
}