54 lines
1.0 KiB
Java
54 lines
1.0 KiB
Java
package it.cavallium.strangedb.database;
|
|
|
|
import it.cavallium.strangedb.database.blocks.BlockInfo;
|
|
|
|
import java.io.IOException;
|
|
|
|
public interface IBlocksMetadata {
|
|
long EMPTY_BLOCK_ID = -1;
|
|
long ERROR_BLOCK_ID = -2;
|
|
BlockInfo EMPTY_BLOCK_INFO = new BlockInfo(0, 0);
|
|
|
|
/**
|
|
* Get block info
|
|
* @param blockId block id
|
|
* @return block metadata
|
|
*/
|
|
BlockInfo getBlockInfo(long blockId) throws IOException;
|
|
|
|
/**
|
|
* New empty block info
|
|
* @return block id
|
|
*/
|
|
default long newBlock() {
|
|
return EMPTY_BLOCK_ID;
|
|
}
|
|
|
|
/**
|
|
* Set block info
|
|
* @param index block index
|
|
* @param size block size
|
|
* @return block id
|
|
*/
|
|
long newBlock(long index, int size) throws IOException;
|
|
|
|
/**
|
|
* Set block info
|
|
* @param blockInfo block info
|
|
* @return block id
|
|
*/
|
|
default long newBlock(BlockInfo blockInfo) throws IOException {
|
|
return this.newBlock(blockInfo.getIndex(), blockInfo.getSize());
|
|
}
|
|
/**
|
|
* Close file
|
|
*/
|
|
void close() throws IOException;
|
|
|
|
/**
|
|
* Get total count of blocks
|
|
* @return
|
|
*/
|
|
long getTotalBlocksCount();
|
|
}
|