package org.infinispan.persistence.sifs;
import java.nio.ByteBuffer;
/**
* @author Radim Vansa <rvansa@redhat.com>
*/
class EntryHeader {
static final int MAGIC = 0xBE11A61C;
static final boolean useMagic = false;
static final int HEADER_SIZE = 24 + (useMagic ? 4 : 0);
private final int keyLength;
private final int valueLength;
private final int metadataLength;
private final long seqId;
private final long expiration;
public EntryHeader(ByteBuffer buffer) {
if (useMagic) {
if (buffer.getInt() != MAGIC) throw new IllegalStateException();
}
this.keyLength = buffer.getShort();
this.metadataLength = buffer.getShort();
this.valueLength = buffer.getInt();
this.seqId = buffer.getLong();
this.expiration = buffer.getLong();
}
public int keyLength() {
return keyLength;
}
public int metadataLength() {
return metadataLength;
}
public int valueLength() {
return valueLength;
}
public long seqId() {
return seqId;
}
public long expiryTime() {
return expiration;
}
@Override
public String toString() {
return String.format("[keyLength=%d, valueLength=%d, seqId=%d, expiration=%d]", keyLength, valueLength, seqId, expiration);
}
public int totalLength() {
return keyLength + metadataLength + valueLength + HEADER_SIZE;
}
}