package com.alibaba.doris.dataserver.store.log.db.impl; import java.util.List; import java.util.concurrent.atomic.AtomicLong; import com.alibaba.doris.dataserver.store.log.db.WriteWindow; import com.alibaba.doris.dataserver.store.log.db.WriteWindowRef; 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 class DefaultWriteWindowRefImpl implements WriteWindowRef { public DefaultWriteWindowRefImpl(WriteWindow writeWindow) { this.writeWindow = writeWindow; } public void incrementReference() { reference.incrementAndGet(); } public void releaseReference() { reference.decrementAndGet(); } public void append(LogEntry logEntry) { writeWindow.append(logEntry); } public boolean close() { if (reference.get() == 0) { return writeWindow.close(); } return false; } public void flushAll() { writeWindow.flushAll(); } public long size() { return writeWindow.size(); } public ClumpHeadEntry getClumpHeadEntry() { return writeWindow.getClumpHeadEntry(); } public boolean deleteByVnodes(List<Integer> vnodeList) { return writeWindow.deleteByVnodes(vnodeList); } public boolean isOpen() { return writeWindow.isOpen(); } public WriteWindow getWriteWindow() { return writeWindow; } public void append(LogEntry[] logEntryArray) { writeWindow.append(logEntryArray); } private WriteWindow writeWindow; private AtomicLong reference = new AtomicLong(); }