package com.think.uiloader.data.cache.internal;
/**
* Created by borney on 3/7/17.
*/
interface Cache {
/**
* putByteMapper a object to cache
*
* @param key 存储对象文件的相对名称,可以是目录树
* @param mapper 存储的对象的转换器
* @param <T> 要存储的对象
*/
<T> void putByteMapper(String key, T obj, ByteMapper<T> mapper);
/**
* get a object from cache
*
* @param key 存储对象文件的相对名称,可以是目录树
* @param <T> 存储的对象的转换器
* @return 存储的对象
*/
<T> T getByteMapper(String key, ByteMapper<T> mapper);
/**
* cache data is expired or not by key
*
* @param key 存储对象文件的相对名称,可以是目录树
*/
boolean isExpired(String key);
/**
* 根据 {@param age} 判断缓存是否过期
*
* @param key 存储对象文件的相对名称,可以是目录树
* @param age 过期指数
*/
boolean isExpired(String key, long age);
/**
* 清除 key 对应的缓存
*
* @param key 存储对象文件的相对名称,可以是目录树
*/
void evict(String key);
/**
* 清除所有缓存
*/
void evictAll();
/**
* 是否缓存了key对应的数据
*
* @param key
* @return
*/
boolean isCached(String key);
}