package com.alibaba.doris.dataserver.store.log.db;
/*
* @author ajun Email:jack.yuj@alibaba-inc.com
*/
public interface LogCommand {
/**
* 标识当前Log命令是否成功执行;
*
* @return
*/
boolean isSuccess();
/**
* 获取当前命令的当前执行结果;
*
* @return
*/
public void waitingResult();
/**
* 通知等待线程,命令执行结束;
*
* @param isSuccess
*/
public void complete();
/**
* 设置当前Log命令的执行结果,成功或者失败;
*
* @param isSuccess
*/
void setSuccess(boolean isSuccess);
/**
* 获取当前Log命令的类型;
*
* @return
*/
Type getType();
/**
* 定义可能存在的Log命令类型,分为以下几类:<BR>
* 1. Append: 表示需要追加一条log记录的命令;例如:set,delete,checkpoint等等;<br>
* 2. Delete:表示当前为删除Log数据的命令。DELETE_BY_VNODES:根据虚拟节点来删除数据;<br>
* DELETE_BY_TIMESTAMP:根据时间戳来删除数据,删除所有该时间戳以前的记录。<br>
* 3. Exit: 退出命令,处理线程接收到该命令会终止当前线程;
*
* @author ajun
*/
enum Type {
APPEND, DELETE_BY_VNODES, DELETE_BY_TIMESTAMP, EXIT
}
}