FileDocCategorySizeDatePackage
Block.javaAPI DocApache Lucene 1.92638Mon Feb 20 09:17:58 GMT 2006org.apache.lucene.store.je

Block

public class Block extends Object
Port of Andi Vajda's DbDirectory to Java Edition of Berkeley Database
author
Aaron Donovan

Fields Summary
protected com.sleepycat.je.DatabaseEntry
key
protected com.sleepycat.je.DatabaseEntry
data
Constructors Summary
protected Block(File file)

        byte[] fileKey = file.getKey();

        key = new DatabaseEntry(new byte[fileKey.length + 8]);
        data = new DatabaseEntry(new byte[JEIndexOutput.BLOCK_LEN]);

        System.arraycopy(fileKey, 0, key.getData(), 0, fileKey.length);
        seek(0L);
    
Methods Summary
protected voidget(JEDirectory directory)

        try {
            // TODO check LockMode
            directory.blocks.get(directory.txn, key, data, null);
        } catch (DatabaseException e) {
            throw new IOException(e.getMessage());
        }
    
protected byte[]getData()

        return data.getData();
    
protected byte[]getKey()

        return key.getData();
    
protected voidput(JEDirectory directory)

        try {
            directory.blocks.put(directory.txn, key, data);
        } catch (DatabaseException e) {
            throw new IOException(e.getMessage());
        }
    
protected voidseek(long position)

        byte[] data = key.getData();
        int index = data.length - 8;

        position >>>= JEIndexOutput.BLOCK_SHIFT;

        data[index + 0] = (byte) (0xff & (position >>> 56));
        data[index + 1] = (byte) (0xff & (position >>> 48));
        data[index + 2] = (byte) (0xff & (position >>> 40));
        data[index + 3] = (byte) (0xff & (position >>> 32));
        data[index + 4] = (byte) (0xff & (position >>> 24));
        data[index + 5] = (byte) (0xff & (position >>> 16));
        data[index + 6] = (byte) (0xff & (position >>> 8));
        data[index + 7] = (byte) (0xff & (position >>> 0));