package org.araqne.storage.filepair;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.ByteBuffer;
public abstract class IndexBlock<Derived extends IndexBlock<Derived>> {
public abstract int getId();
public abstract boolean isEquivalent(Derived obj);
public abstract boolean isReserved();
public abstract long getPosOnData();
public boolean hasEndPosOnData() { return false; }
public long getEndPosOnData() { return -1; }
public abstract int getBlockSize();
public abstract void serialize(OutputStream os) throws IOException;
public abstract Derived unserialize(int blockId, InputStream os) throws IOException;
public abstract Derived unserialize(int blockId, ByteBuffer buf);
public abstract long getDataBlockLen();
public abstract Derived newReservedBlock();
public abstract void setDataBlockLen(long dataBlockLen);
}