All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.ltsopensource.kv.index.IndexSnapshotFileHeader Maven / Gradle / Ivy

package com.github.ltsopensource.kv.index;

import com.github.ltsopensource.kv.AbstractFileHeader;

import java.io.IOException;
import java.nio.channels.FileChannel;

/**
 * 文件头部
 * 1. magic                  2 byte
 * 3. storeTxLogPosition     8 byte      // 快照到的最后一条事务日志ID
 * 

* @author Robert HG ([email protected]) on 12/19/15. */ public class IndexSnapshotFileHeader extends AbstractFileHeader { private final static short magic = (short) 0xBE03; // 8 byte (最后的一个txLog的记录ID) private long storeTxLogRecordId; @Override public int getLength() { return 2 + 8; } @Override public void read(FileChannel fileChannel) throws IOException { fileChannel.position(0); fileChannel.read(byteBuffer()); byteBuffer().position(0); short readMagic = byteBuffer().getShort(); if (readMagic != magic) { throw new IOException("Invalid file type magic number 0x" + Integer.toHexString(readMagic & 0xFFFF)); } this.storeTxLogRecordId = byteBuffer().getLong(); } @Override public void write(FileChannel fileChannel) throws IOException { byteBuffer().position(0); byteBuffer().putShort(magic); byteBuffer().putLong(storeTxLogRecordId); byteBuffer().flip(); fileChannel.position(0); fileChannel.write(byteBuffer()); fileChannel.force(true); } public long getStoreTxLogRecordId() { return storeTxLogRecordId; } public void setStoreTxLogRecordId(long storeTxLogRecordId) { this.storeTxLogRecordId = storeTxLogRecordId; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy