package com.elab.cache.error;


import com.elab.cache.ICacheClient;


/**
 * @Description: 当缓存发生故障时, 需要处理的类
 * @Author: Liukx on 2017/11/9 - 16:14
 */
public interface CacheErrorProcess {

    /**
     * 当调用获取缓存数据的操作发送故障时
     *
     * @param exception 异常信息
     * @param cache     缓存信息
     * @param key       key
     */
    void handleCacheGetError(RuntimeException exception, ICacheClient cache, Object key);

    /**
     * 当调用更新缓存发生异常的处理方法
     *
     * @param exception 异常信息
     * @param cache     缓存信息
     * @param key       指定的key
     * @param value     具体的值
     */
    void handleCachePutError(RuntimeException exception, ICacheClient cache, Object key, Object value);

    /**
     * 当调用更新缓存发生异常的处理方法
     *
     * @param exception 异常信息
     * @param cache     缓存信息
     * @param key       指定的key
     * @param filed     指定的字段
     * @param value     指定的值
     */
    void handleCachePutError(RuntimeException exception, ICacheClient cache, Object key, Object filed, Object value);

    /**
     * 当删除缓存异常时,处理方法
     *
     * @param exception 异常信息
     * @param cache     缓存对象信息
     * @param key       指定的key
     */
    void handleCacheEvictError(RuntimeException exception, ICacheClient cache, Object key);

    /**
     * 当清空缓存出现异常时,处理方法
     *
     * @param exception 异常信息
     * @param cache     缓存信息
     */
    void handleCacheClearError(RuntimeException exception, ICacheClient cache);

}
