Skip to content

Commit

Permalink
Merge pull request #258 from jamesmudd/hdfFc-rename
Browse files Browse the repository at this point in the history
Rename hdfFc → hdfBackingStorage where appropriate
  • Loading branch information
jamesmudd authored Feb 14, 2021
2 parents 4c0396c + 8d38d5e commit 5cd402e
Show file tree
Hide file tree
Showing 51 changed files with 333 additions and 334 deletions.
16 changes: 8 additions & 8 deletions jhdf/src/main/java/io/jhdf/AbstractNode.java
Original file line number Diff line number Diff line change
Expand Up @@ -56,14 +56,14 @@ protected Map<String, Attribute> initialize() throws ConcurrentException {

if (attributeInfoMessage.getFractalHeapAddress() != Constants.UNDEFINED_ADDRESS) {
// Create the heap and btree
FractalHeap fractalHeap = new FractalHeap(hdfFc, attributeInfoMessage.getFractalHeapAddress());
BTreeV2<AttributeNameForIndexedAttributesRecord> btree = new BTreeV2<>(hdfFc,
FractalHeap fractalHeap = new FractalHeap(hdfBackingStorage, attributeInfoMessage.getFractalHeapAddress());
BTreeV2<AttributeNameForIndexedAttributesRecord> btree = new BTreeV2<>(hdfBackingStorage,
attributeInfoMessage.getAttributeNameBTreeAddress());

// Read the attribute messages from the btree+heap
for (AttributeNameForIndexedAttributesRecord attributeRecord : btree.getRecords()) {
ByteBuffer bb = fractalHeap.getId(attributeRecord.getHeapId());
AttributeMessage attributeMessage = new AttributeMessage(bb, hdfFc,
AttributeMessage attributeMessage = new AttributeMessage(bb, hdfBackingStorage,
attributeRecord.getFlags());
logger.trace("Read attribute message '{}'", attributeMessage);
attributeMessages.add(attributeMessage);
Expand All @@ -77,25 +77,25 @@ protected Map<String, Attribute> initialize() throws ConcurrentException {
return attributeMessages.stream()
.collect(
toMap(AttributeMessage::getName,
message -> new AttributeImpl(hdfFc, AbstractNode.this, message)));
message -> new AttributeImpl(hdfBackingStorage, AbstractNode.this, message)));
}
}

private final HdfBackingStorage hdfFc;
private final HdfBackingStorage hdfBackingStorage;
protected final long address;
protected final String name;
protected final Group parent;
protected final LazyInitializer<ObjectHeader> header;
protected final AttributesLazyInitializer attributes;

protected AbstractNode(HdfBackingStorage hdfFc, long address, String name, Group parent) {
this.hdfFc = hdfFc;
protected AbstractNode(HdfBackingStorage hdfBackingStorage, long address, String name, Group parent) {
this.hdfBackingStorage = hdfBackingStorage;
this.address = address;
this.name = name;
this.parent = parent;

try {
header = ObjectHeader.lazyReadObjectHeader(hdfFc, address);
header = ObjectHeader.lazyReadObjectHeader(hdfBackingStorage, address);

// Attributes
attributes = new AttributesLazyInitializer(header);
Expand Down
8 changes: 4 additions & 4 deletions jhdf/src/main/java/io/jhdf/AttributeImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@
public class AttributeImpl implements Attribute {
private static final Logger logger = LoggerFactory.getLogger(AttributeImpl.class);

private final HdfBackingStorage hdfFc;
private final HdfBackingStorage hdfBackingStorage;
private final Node node;
private final String name;
private final AttributeMessage message;

public AttributeImpl(HdfBackingStorage hdfFc, Node node, AttributeMessage message) {
this.hdfFc = hdfFc;
public AttributeImpl(HdfBackingStorage hdfBackingStorage, Node node, AttributeMessage message) {
this.hdfBackingStorage = hdfBackingStorage;
this.node = node;
this.name = message.getName();
this.message = message;
Expand Down Expand Up @@ -70,7 +70,7 @@ public Object getData() {
}
DataType type = message.getDataType();
ByteBuffer bb = message.getDataBuffer();
return DatasetReader.readDataset(type, bb, getDimensions(), hdfFc);
return DatasetReader.readDataset(type, bb, getDimensions(), hdfBackingStorage);
}

@Override
Expand Down
4 changes: 2 additions & 2 deletions jhdf/src/main/java/io/jhdf/CommittedDatatype.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@

public class CommittedDatatype extends AbstractNode {

public CommittedDatatype(HdfBackingStorage hdfFc, long address, String name, Group parent) {
super(hdfFc, address, name, parent);
public CommittedDatatype(HdfBackingStorage hdfBackingStorage, long address, String name, Group parent) {
super(hdfBackingStorage, address, name, parent);
}

@Override
Expand Down
20 changes: 10 additions & 10 deletions jhdf/src/main/java/io/jhdf/FractalHeap.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public class FractalHeap {
private static final BigInteger TWO = BigInteger.valueOf(2L);

private final long address;
private final HdfBackingStorage hdfFc;
private final HdfBackingStorage hdfBackingStorage;
private final Superblock sb;

private final int maxDirectBlockSize;
Expand Down Expand Up @@ -95,15 +95,15 @@ public class FractalHeap {
private final int bytesToStoreOffset;
private final int bytesToStoreLength;

public FractalHeap(HdfBackingStorage hdfFc, long address) {
this.hdfFc = hdfFc;
this.sb = hdfFc.getSuperblock();
public FractalHeap(HdfBackingStorage hdfBackingStorage, long address) {
this.hdfBackingStorage = hdfBackingStorage;
this.sb = hdfBackingStorage.getSuperblock();
this.address = address;

final int headerSize = 4 + 1 + 2 + 2 + 1 + 4 + 12 * sb.getSizeOfLengths() + 3 * sb.getSizeOfOffsets() + 2
+ 2 + 2 + 2 + 4;

ByteBuffer bb = hdfFc.readBufferFromAddress(address, headerSize);
ByteBuffer bb = hdfBackingStorage.readBufferFromAddress(address, headerSize);

byte[] formatSignatureBytes = new byte[4];
bb.get(formatSignatureBytes, 0, formatSignatureBytes.length);
Expand Down Expand Up @@ -228,15 +228,15 @@ public ByteBuffer getId(ByteBuffer buffer) {
}

BTreeV2<HugeFractalHeapObjectUnfilteredRecord> hugeObjectBTree =
new BTreeV2<>(this.hdfFc, this.bTreeAddressOfHugeObjects);
new BTreeV2<>(this.hdfBackingStorage, this.bTreeAddressOfHugeObjects);

if (hugeObjectBTree.getRecords().size() != 1) {
throw new UnsupportedHdfException("Only Huge objects BTrees with 1 record are currently supported");
}

HugeFractalHeapObjectUnfilteredRecord ho = hugeObjectBTree.getRecords().get(0);

return this.hdfFc.readBufferFromAddress(ho.getAddress(), (int) ho.getLength());
return this.hdfBackingStorage.readBufferFromAddress(ho.getAddress(), (int) ho.getLength());
case 2: // Tiny objects
throw new UnsupportedHdfException("Tiny objects are currently not supported");
default:
Expand All @@ -252,7 +252,7 @@ private IndirectBlock(long address) {
final int headerSize = 4 + 1 + sb.getSizeOfOffsets() + bytesToStoreOffset
+ currentRowsInRootIndirectBlock * tableWidth * getRowSize() + 4;

ByteBuffer bb = hdfFc.readBufferFromAddress(address, headerSize);
ByteBuffer bb = hdfBackingStorage.readBufferFromAddress(address, headerSize);

byte[] formatSignatureBytes = new byte[4];
bb.get(formatSignatureBytes, 0, formatSignatureBytes.length);
Expand Down Expand Up @@ -319,7 +319,7 @@ private DirectBlock(long address) {

final int headerSize = 4 + 1 + sb.getSizeOfOffsets() + bytesToStoreOffset + 4;

ByteBuffer bb = hdfFc.readBufferFromAddress(address, headerSize);
ByteBuffer bb = hdfBackingStorage.readBufferFromAddress(address, headerSize);

byte[] formatSignatureBytes = new byte[4];
bb.get(formatSignatureBytes, 0, formatSignatureBytes.length);
Expand All @@ -342,7 +342,7 @@ private DirectBlock(long address) {

blockOffset = readBytesAsUnsignedLong(bb, bytesToStoreOffset);

data = hdfFc.map(address, getSizeOfDirectBlock(blockIndex));
data = hdfBackingStorage.map(address, getSizeOfDirectBlock(blockIndex));

if (checksumPresent()) {
int storedChecksum = bb.getInt();
Expand Down
20 changes: 10 additions & 10 deletions jhdf/src/main/java/io/jhdf/GlobalHeap.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,19 +26,19 @@ public class GlobalHeap {

private static final byte[] GLOBAL_HEAP_SIGNATURE = "GCOL".getBytes(StandardCharsets.US_ASCII);

private final HdfBackingStorage hdfFc;
private final HdfBackingStorage hdfBackingStorage;
private final long address;

private final Map<Integer, GlobalHeapObject> objects = new HashMap<>();

public GlobalHeap(HdfBackingStorage hdfFc, long address) {
this.hdfFc = hdfFc;
public GlobalHeap(HdfBackingStorage hdfBackingStorage, long address) {
this.hdfBackingStorage = hdfBackingStorage;
this.address = address;

try {
int headerSize = 4 + 1 + 3 + hdfFc.getSizeOfLengths();
int headerSize = 4 + 1 + 3 + hdfBackingStorage.getSizeOfLengths();

ByteBuffer bb = hdfFc.readBufferFromAddress(address, headerSize);
ByteBuffer bb = hdfBackingStorage.readBufferFromAddress(address, headerSize);

byte[] signatureBytes = new byte[4];
bb.get(signatureBytes, 0, signatureBytes.length);
Expand All @@ -56,12 +56,12 @@ public GlobalHeap(HdfBackingStorage hdfFc, long address) {

bb.position(8); // Skip past 3 reserved bytes

int collectionSize = readBytesAsUnsignedInt(bb, hdfFc.getSizeOfLengths());
int collectionSize = readBytesAsUnsignedInt(bb, hdfBackingStorage.getSizeOfLengths());

// Collection size contains size of whole collection, so substract already read bytes
int remainingCollectionSize = collectionSize - 8 - hdfFc.getSizeOfLengths();
int remainingCollectionSize = collectionSize - 8 - hdfBackingStorage.getSizeOfLengths();
// Now start reading the heap into memory
bb = hdfFc.readBufferFromAddress(address + headerSize, remainingCollectionSize);
bb = hdfBackingStorage.readBufferFromAddress(address + headerSize, remainingCollectionSize);

// minimal global heap object is 16 bytes
while (bb.remaining() >= 16) {
Expand Down Expand Up @@ -94,10 +94,10 @@ private GlobalHeapObject(GlobalHeap globalHeap, ByteBuffer bb) {
index = readBytesAsUnsignedInt(bb, 2);
referenceCount = readBytesAsUnsignedInt(bb, 2);
bb.position(bb.position() + 4); // Skip 4 reserved bytes
int size = readBytesAsUnsignedInt(bb, globalHeap.hdfFc.getSizeOfOffsets());
int size = readBytesAsUnsignedInt(bb, globalHeap.hdfBackingStorage.getSizeOfOffsets());
if (index == 0) {
//the size in global heap object 0 is the free space without counting object 0
size = size - 2 - 2 - 4 - globalHeap.hdfFc.getSizeOfOffsets();
size = size - 2 - 2 - 4 - globalHeap.hdfBackingStorage.getSizeOfOffsets();
}
data = createSubBuffer(bb, size);
seekBufferToNextMultipleOfEight(bb);
Expand Down
52 changes: 26 additions & 26 deletions jhdf/src/main/java/io/jhdf/GroupImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@

public class GroupImpl extends AbstractNode implements Group {
private final class ChildrenLazyInitializer extends LazyInitializer<Map<String, Node>> {
private final HdfBackingStorage hdfFc;
private final HdfBackingStorage hdfBackingStorage;
private final Group parent;

private ChildrenLazyInitializer(HdfBackingStorage hdfFc, Group parent) {
this.hdfFc = hdfFc;
private ChildrenLazyInitializer(HdfBackingStorage hdfBackingStorage, Group parent) {
this.hdfBackingStorage = hdfBackingStorage;
this.parent = parent;
}

Expand Down Expand Up @@ -74,17 +74,17 @@ private Map<String, Node> createNewStyleGroup(final ObjectHeader oh) {
logger.debug("Loaded group links from object header");
} else {
// Links are not stored compactly i.e in the fractal heap
final BTreeV2<LinkNameForIndexedGroupRecord> bTreeNode = new BTreeV2<>(hdfFc,
final BTreeV2<LinkNameForIndexedGroupRecord> bTreeNode = new BTreeV2<>(hdfBackingStorage,
linkInfoMessage.getBTreeNameIndexAddress());
final FractalHeap fractalHeap = new FractalHeap(hdfFc, linkInfoMessage.getFractalHeapAddress());
final FractalHeap fractalHeap = new FractalHeap(hdfBackingStorage, linkInfoMessage.getFractalHeapAddress());

List<LinkNameForIndexedGroupRecord> records = bTreeNode.getRecords();
links = new ArrayList<>(records.size());
for (LinkNameForIndexedGroupRecord linkName : records) {
ByteBuffer id = linkName.getId();
// Get the name data from the fractal heap
ByteBuffer bb = fractalHeap.getId(id);
links.add(LinkMessage.fromBuffer(bb, hdfFc.getSuperblock()));
links.add(LinkMessage.fromBuffer(bb, hdfBackingStorage.getSuperblock()));
}
logger.debug("Loaded group links from fractal heap");
}
Expand Down Expand Up @@ -114,15 +114,15 @@ private Map<String, Node> createNewStyleGroup(final ObjectHeader oh) {
private Map<String, Node> createOldStyleGroup(final ObjectHeader oh) {
logger.debug("Loading 'old' style group");
final SymbolTableMessage stm = oh.getMessageOfType(SymbolTableMessage.class);
final BTreeV1 rootBTreeNode = BTreeV1.createGroupBTree(hdfFc, stm.getBTreeAddress());
final LocalHeap rootNameHeap = new LocalHeap(hdfFc, stm.getLocalHeapAddress());
final BTreeV1 rootBTreeNode = BTreeV1.createGroupBTree(hdfBackingStorage, stm.getBTreeAddress());
final LocalHeap rootNameHeap = new LocalHeap(hdfBackingStorage, stm.getLocalHeapAddress());
final ByteBuffer nameBuffer = rootNameHeap.getDataBuffer();

final List<Long> childAddresses = rootBTreeNode.getChildAddresses();
final Map<String, Node> lazyChildren = new LinkedHashMap<>(childAddresses.size());

for (long child : childAddresses) {
GroupSymbolTableNode groupSTE = new GroupSymbolTableNode(hdfFc, child);
GroupSymbolTableNode groupSTE = new GroupSymbolTableNode(hdfBackingStorage, child);
for (SymbolTableEntry ste : groupSTE.getSymbolTableEntries()) {
String childName = readName(nameBuffer, ste.getLinkNameOffset());
final Node node;
Expand All @@ -132,7 +132,7 @@ private Map<String, Node> createOldStyleGroup(final ObjectHeader oh) {
break;
case 1: // Cached group
logger.trace("Creating group '{}'", childName);
node = createGroup(hdfFc, ste.getObjectHeaderAddress(), childName, parent);
node = createGroup(hdfBackingStorage, ste.getObjectHeaderAddress(), childName, parent);
break;
case 2: // Soft Link
logger.trace("Creating soft link '{}'", childName);
Expand All @@ -150,20 +150,20 @@ private Map<String, Node> createOldStyleGroup(final ObjectHeader oh) {
}

private Node createNode(String name, long address) {
final ObjectHeader linkHeader = ObjectHeader.readObjectHeader(hdfFc, address);
final ObjectHeader linkHeader = ObjectHeader.readObjectHeader(hdfBackingStorage, address);
final Node node;
if (linkHeader.hasMessageOfType(DataSpaceMessage.class)) {
// Its a a Dataset
logger.trace("Creating dataset [{}]", name);
node = DatasetLoader.createDataset(hdfFc, linkHeader, name, parent);
node = DatasetLoader.createDataset(hdfBackingStorage, linkHeader, name, parent);
} else if (linkHeader.hasMessageOfType(DataTypeMessage.class)) {
// Has a datatype but no dataspace so its a committed datatype
logger.trace("Creating committed data type [{}]", name);
node = new CommittedDatatype(hdfFc, address, name, parent);
node = new CommittedDatatype(hdfBackingStorage, address, name, parent);
} else {
// Its a group
logger.trace("Creating group [{}]", name);
node = createGroup(hdfFc, address, name, parent);
node = createGroup(hdfBackingStorage, address, name, parent);
}
return node;
}
Expand All @@ -178,29 +178,29 @@ private String readName(ByteBuffer bb, int linkNameOffset) {

private final LazyInitializer<Map<String, Node>> children;

private GroupImpl(HdfBackingStorage hdfFc, long address, String name, Group parent) {
super(hdfFc, address, name, parent);
private GroupImpl(HdfBackingStorage hdfBackingStorage, long address, String name, Group parent) {
super(hdfBackingStorage, address, name, parent);
logger.trace("Creating group '{}'...", name);

children = new ChildrenLazyInitializer(hdfFc, this);
children = new ChildrenLazyInitializer(hdfBackingStorage, this);

logger.debug("Created group '{}'", getPath());
}

/**
* This is a special case constructor for the root group.
*
* @param hdfFc The file channel for reading the file
* @param hdfBackingStorage The file channel for reading the file
* @param objectHeaderAddress The offset into the file of the object header for
* this group
* @param parent For the root group the parent is the file itself.
*/
private GroupImpl(HdfBackingStorage hdfFc, long objectHeaderAddress, HdfFile parent) {
super(hdfFc, objectHeaderAddress, "", parent); // No name special case for root group no name
private GroupImpl(HdfBackingStorage hdfBackingStorage, long objectHeaderAddress, HdfFile parent) {
super(hdfBackingStorage, objectHeaderAddress, "", parent); // No name special case for root group no name
logger.trace("Creating root group...");

// Special case for root group pass parent instead of this
children = new ChildrenLazyInitializer(hdfFc, parent);
children = new ChildrenLazyInitializer(hdfBackingStorage, parent);

logger.debug("Created root group of file '{}'", parent.getName());
}
Expand All @@ -209,21 +209,21 @@ private GroupImpl(HdfBackingStorage hdfFc, long objectHeaderAddress, HdfFile par
* Creates a group for the specified object header with the given name by
* reading from the file channel.
*
* @param hdfFc The file channel for reading the file
* @param hdfBackingStorage The file channel for reading the file
* @param objectHeaderAddress The offset into the file of the object header for
* this group
* @param name The name of this group
* @param parent For the root group the parent is the file itself.
* @return The newly read group
*/
/* package */ static Group createGroup(HdfBackingStorage hdfFc, long objectHeaderAddress, String name,
/* package */ static Group createGroup(HdfBackingStorage hdfBackingStorage, long objectHeaderAddress, String name,
Group parent) {
return new GroupImpl(hdfFc, objectHeaderAddress, name, parent);
return new GroupImpl(hdfBackingStorage, objectHeaderAddress, name, parent);
}

/* package */ static Group createRootGroup(HdfBackingStorage hdfFc, long objectHeaderAddress, HdfFile file) {
/* package */ static Group createRootGroup(HdfBackingStorage hdfBackingStorage, long objectHeaderAddress, HdfFile file) {
// Call the special root group constructor
return new GroupImpl(hdfFc, objectHeaderAddress, file);
return new GroupImpl(hdfBackingStorage, objectHeaderAddress, file);
}

@Override
Expand Down
8 changes: 4 additions & 4 deletions jhdf/src/main/java/io/jhdf/GroupSymbolTableNode.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,11 @@ public class GroupSymbolTableNode {
private final short numberOfEntries;
private final SymbolTableEntry[] symbolTableEntries;

public GroupSymbolTableNode(HdfBackingStorage hdfFc, long address) {
public GroupSymbolTableNode(HdfBackingStorage hdfBackingStorage, long address) {
this.address = address;
try {
int headerSize = 8;
ByteBuffer header = hdfFc.readBufferFromAddress(address, headerSize);
ByteBuffer header = hdfBackingStorage.readBufferFromAddress(address, headerSize);

byte[] formatSignatureBytes = new byte[4];
header.get(formatSignatureBytes, 0, formatSignatureBytes.length);
Expand All @@ -59,12 +59,12 @@ public GroupSymbolTableNode(HdfBackingStorage hdfFc, long address) {
numberOfEntries = ByteBuffer.wrap(twoBytes).order(LITTLE_ENDIAN).getShort();
logger.trace("numberOfSymbols = {}", numberOfEntries);

final long symbolTableEntryBytes = hdfFc.getSizeOfOffsets() * 2L + 8L + 16L;
final long symbolTableEntryBytes = hdfBackingStorage.getSizeOfOffsets() * 2L + 8L + 16L;

symbolTableEntries = new SymbolTableEntry[numberOfEntries];
for (int i = 0; i < numberOfEntries; i++) {
long offset = address + headerSize + i * symbolTableEntryBytes;
symbolTableEntries[i] = new SymbolTableEntry(hdfFc, offset);
symbolTableEntries[i] = new SymbolTableEntry(hdfBackingStorage, offset);
}
} catch (Exception e) {
// TODO improve message
Expand Down
Loading

0 comments on commit 5cd402e

Please sign in to comment.