package com.github.seanlinwang.fkv; import java.io.IOException; import java.nio.ByteBuffer; /** * KV的文件存储接口 * 针对文件而言,写到文件里的数据需要通过索引才可以高效地读取出来. * 文件的一个很重要的特性就是position信息.即startIndex. * 接口方法的参数暴露了position参数.具体的KV实现会调用KV的文件存储实现类,传递position参数从而写入数据到文件中 * @author sean.wang * @since Nov 16, 2011 */ public interface FkvStore { /** * 从索引处开始读取,一共读取size个大小 * @param startIndex * @param size * @return */ byte[] get(int startIndex, int size); /** * 从指定位置开始写入数据,数据的内容是value * @param startIndex * @param value */ void put(int startIndex, byte[] value); /** * 从指定位置写入一共字节的数据 * @param startIndex * @param value */ void put(int startIndex, byte value); void close() throws IOException; boolean isNeedDeserial(); ByteBuffer getBuffer(); void rewind(); int remaining(); void get(byte[] bytes); }