package com.alibaba.doris.dataserver.store.log.db;
import java.util.List;
import com.alibaba.doris.dataserver.store.log.entry.ClumpHeadEntry;
import com.alibaba.doris.dataserver.store.log.entry.LogEntry;
/**
* @author ajun Email:jack.yuj@alibaba-inc.com
*/
public interface WriteWindow {
/**
* 通过写入窗口,向Log DB中插入一条Log记录。
*
* @param logEntry
*/
public void append(LogEntry logEntry);
public void append(LogEntry[] logEntryArray);
/**
* 将buffer中的数据刷新到磁盘上;
*/
public void flushAll();
/**
* 获取当前write window对应数据文件的大小;
*
* @return
*/
public long size();
/**
* 关闭当前write window,并释放文件句柄;
*
* @return
*/
public boolean close();
/**
* 获取当前Log文件的head文件信息;
*
* @return
*/
public ClumpHeadEntry getClumpHeadEntry();
/**
* 删除当前Log文件中指定虚拟节点下面的数据数据;<BR>
* 备注:只在head文件中删除对应的虚拟节点数据,并不清楚数据文件中的数据;<BR>
* 当head文件中不再存在任何虚拟节点数据时,head文件和data文件会一并清除;
*
* @param vnodeList
* @return
*/
public boolean deleteByVnodes(List<Integer> vnodeList);
/**
* 检查当前write window对象是否处于打开状态;
*
* @return
*/
public boolean isOpen();
}