long readAddress() throws IOException { return getFileOffset(readOffset()); }
long readAddress() throws IOException { return getFileOffset(readOffset()); }
long readAddress() throws IOException { return getFileOffset(readOffset()); }
private int readMessagesVersion1(long pos, int maxMess, int maxBytes, String objectName) throws IOException { if (debugContinueMessage) debugOut.println(" readMessages start at =" + pos + " maxMess= " + maxMess + " maxBytes= " + maxBytes); int count = 0; int bytesRead = 0; while ((count < maxMess) && (bytesRead < maxBytes)) { /* LOOK: MessageContinue not correct ?? if (posMess >= actualSize) break; */ HeaderMessage mess = new HeaderMessage(); //messages.add( mess); int n = mess.read(pos, 1, false, objectName); pos += n; bytesRead += n; count++; if (debugContinueMessage) debugOut.println(" count=" + count + " bytesRead=" + bytesRead); // if we hit a continuation, then we go into nested reading if (mess.mtype == MessageType.ObjectHeaderContinuation) { MessageContinue c = (MessageContinue) mess.messData; if (debugContinueMessage) debugOut.println(" ---ObjectHeaderContinuation--- "); count += readMessagesVersion1(getFileOffset(c.offset), maxMess - count, (int) c.length, objectName); if (debugContinueMessage) debugOut.println(" ---ObjectHeaderContinuation return --- "); } else if (mess.mtype != MessageType.NIL) { messages.add(mess); } } return count; }
/** * Constructor * * @param facade DataObjectFacade: always has an mdt and an msl * @throws java.io.IOException on read error */ Vinfo(DataObjectFacade facade) throws IOException { this.facade = facade; this.dataPos = getFileOffset(facade.dobj.msl.dataAddress); this.mdt = facade.dobj.mdt; this.mds = facade.dobj.mds; this.mfp = facade.dobj.mfp; if (!facade.dobj.mdt.isOK && warnings) { debugOut.println("WARNING HDF5 file " + ncfile.getLocation() + " not handling " + facade.dobj.mdt); return; // not a supported datatype } this.isChunked = (facade.dobj.msl.type == 2); if (isChunked) { this.storageSize = facade.dobj.msl.chunkSize; } else { this.storageSize = facade.dobj.mds.dimLength; } // figure out the data type this.typeInfo = calcNCtype(facade.dobj.mdt); }
private int readMessagesVersion1(long pos, int maxMess, int maxBytes, String objectName) throws IOException { if (debugContinueMessage) debugOut.println(" readMessages start at =" + pos + " maxMess= " + maxMess + " maxBytes= " + maxBytes); int count = 0; int bytesRead = 0; while ((count < maxMess) && (bytesRead < maxBytes)) { /* LOOK: MessageContinue not correct ?? if (posMess >= actualSize) break; */ HeaderMessage mess = new HeaderMessage(); //messages.add( mess); int n = mess.read(pos, 1, false, objectName); pos += n; bytesRead += n; count++; if (debugContinueMessage) debugOut.println(" count=" + count + " bytesRead=" + bytesRead); // if we hit a continuation, then we go into nested reading if (mess.mtype == MessageType.ObjectHeaderContinuation) { MessageContinue c = (MessageContinue) mess.messData; if (debugContinueMessage) debugOut.println(" ---ObjectHeaderContinuation--- "); count += readMessagesVersion1(getFileOffset(c.offset), maxMess - count, (int) c.length, objectName); if (debugContinueMessage) debugOut.println(" ---ObjectHeaderContinuation return --- "); } else if (mess.mtype != MessageType.NIL) { messages.add(mess); } } return count; }
log.debug(" ---ObjectHeaderContinuation--- "); count += readMessagesVersion1(getFileOffset(c.offset), maxMess - count, (int) c.length, objectName); if (debugContinueMessage) { log.debug(" ---ObjectHeaderContinuation return --- ");
/** * Constructor * * @param facade DataObjectFacade: always has an mdt and an msl * @throws java.io.IOException on read error */ Vinfo(DataObjectFacade facade) throws IOException { this.facade = facade; // LOOK if compact, do not use fileOffset this.dataPos = (facade.dobj.msl.type == 0) ? facade.dobj.msl.dataAddress : getFileOffset(facade.dobj.msl.dataAddress); this.mdt = facade.dobj.mdt; this.mds = facade.dobj.mds; this.mfp = facade.dobj.mfp; isvlen = this.mdt.isVlen(); if (!facade.dobj.mdt.isOK && warnings) { debugOut.println("WARNING HDF5 file " + ncfile.getLocation() + " not handling " + facade.dobj.mdt); return; // not a supported datatype } this.isChunked = (facade.dobj.msl.type == 2); if (isChunked) { this.storageSize = facade.dobj.msl.chunkSize; } else { this.storageSize = facade.dobj.mds.dimLength; } // figure out the data type this.typeInfo = calcNCtype(facade.dobj.mdt); }
/** * Constructor * * @param facade DataObjectFacade: always has an mdt and an msl * @throws java.io.IOException on read error */ Vinfo(DataObjectFacade facade) throws IOException { this.facade = facade; // LOOK if compact, do not use fileOffset this.dataPos = (facade.dobj.msl.type == 0) ? facade.dobj.msl.dataAddress : getFileOffset(facade.dobj.msl.dataAddress); this.mdt = facade.dobj.mdt; this.mds = facade.dobj.mds; this.mfp = facade.dobj.mfp; isvlen = this.mdt.isVlen(); if (!facade.dobj.mdt.isOK && warnings) { log.debug("WARNING HDF5 file " + ncfile.getLocation() + " not handling " + facade.dobj.mdt); return; // not a supported datatype } this.isChunked = (facade.dobj.msl.type == 2); if (isChunked) { this.storageSize = facade.dobj.msl.chunkSize; } else { this.storageSize = facade.dobj.mds.dimLength; } // figure out the data type this.typeInfo = calcNCtype(facade.dobj.mdt); }
LeafNode(long address, short nrecords) throws IOException { raf.seek(h5.getFileOffset(address)); if (debugPos) debugOut.println("--Btree2 InternalNode position=" + raf.getFilePointer()); // header byte[] sig = new byte[4]; raf.readFully(sig); String magic = new String(sig, CDM.utf8Charset); if (!magic.equals("BTLF")) throw new IllegalStateException(magic + " should equal BTLF"); byte version = raf.readByte(); byte nodeType = raf.readByte(); if (nodeType != btreeType) throw new IllegalStateException(); if (debugBtree2) debugOut.println(" BTree2 LeafNode version=" + version + " type=" + nodeType + " nrecords=" + nrecords); entries = new Entry2[nrecords]; for (int i = 0; i < nrecords; i++) { entries[i] = new Entry2(); entries[i].record = readRecord(btreeType); } // skip raf.readInt(); }
LeafNode(long address, short nrecords) throws IOException { raf.seek(h5.getFileOffset(address)); if (debugPos) debugOut.println("--Btree2 InternalNode position=" + raf.getFilePointer()); // header byte[] sig = new byte[4]; raf.read(sig); String magic = new String(sig); if (!magic.equals("BTLF")) throw new IllegalStateException(magic + " should equal BTLF"); byte version = raf.readByte(); byte nodeType = raf.readByte(); if (nodeType != btreeType) throw new IllegalStateException(); if (debugBtree2) debugOut.println(" BTree2 LeafNode version=" + version + " type=" + nodeType + " nrecords=" + nrecords); entries = new Entry2[nrecords]; for (int i = 0; i < nrecords; i++) { entries[i] = new Entry2(); entries[i].record = readRecord(btreeType); } int checksum = raf.readInt(); }
LeafNode(long address, short nrecords) throws IOException { raf.seek(h5.getFileOffset(address)); if (debugPos) debugOut.println("--Btree2 InternalNode position=" + raf.getFilePointer()); // header byte[] sig = new byte[4]; raf.readFully(sig); String magic = new String(sig, CDM.utf8Charset); if (!magic.equals("BTLF")) throw new IllegalStateException(magic + " should equal BTLF"); byte version = raf.readByte(); byte nodeType = raf.readByte(); if (nodeType != btreeType) throw new IllegalStateException(); if (debugBtree2) debugOut.println(" BTree2 LeafNode version=" + version + " type=" + nodeType + " nrecords=" + nrecords); entries = new Entry2[nrecords]; for (int i = 0; i < nrecords; i++) { entries[i] = new Entry2(); entries[i].record = readRecord(btreeType); } // skip raf.readInt(); }
HeapIdentifier(long address) throws IOException { // header information is in le byte order raf.order(RandomAccessFile.LITTLE_ENDIAN); raf.seek(address); nelems = raf.readInt(); heapAddress = readOffset(); index = raf.readInt(); if (debugDetail) debugOut.println(" read HeapIdentifier address=" + address + this); if (debugHeap) dump("heapIdentifier", getFileOffset(address), 16, true); }
HeapIdentifier(long address) throws IOException { // header information is in le byte order raf.order(RandomAccessFile.LITTLE_ENDIAN); raf.seek(address); nelems = raf.readInt(); heapAddress = readOffset(); index = raf.readInt(); if (debugDetail) { log.debug(" read HeapIdentifier address=" + address + this); } if (debugHeap) dump("heapIdentifier", getFileOffset(address), 16, true); }
HeapIdentifier(long address) throws IOException { // header information is in le byte order raf.order(RandomAccessFile.LITTLE_ENDIAN); raf.seek(address); nelems = raf.readInt(); heapAddress = readOffset(); index = raf.readInt(); if (debugDetail) debugOut.println(" read HeapIdentifier address=" + address + this); if (debugHeap) dump("heapIdentifier", getFileOffset(address), 16, true); }
GroupNode(long address) throws IOException { this.address = address; raf.seek(getFileOffset(address)); if (debugDetail) debugOut.println("--Group Node position=" + raf.getFilePointer()); // header byte[] sig = new byte[4]; raf.read(sig); String magic = new String(sig); if (!magic.equals("SNOD")) throw new IllegalStateException(magic + " should equal SNOD"); version = raf.readByte(); raf.readByte(); // skip byte nentries = raf.readShort(); if (debugDetail) debugOut.println(" version=" + version + " nentries=" + nentries); long posEntry = raf.getFilePointer(); for (int i = 0; i < nentries; i++) { SymbolTableEntry entry = new SymbolTableEntry(posEntry); posEntry += entry.getSize(); if (entry.objectHeaderAddress != 0) { // LOOK: Probably a bug in HDF5 file format ?? jc July 16 2010 if (debug1) debugOut.printf(" add %s%n", entry); symbols.add(entry); } else { if (debug1) debugOut.printf(" BAD objectHeaderAddress==0 !! %s%n", entry); } } if (debugDetail) debugOut.println("-- Group Node end position=" + raf.getFilePointer()); long size = 8 + nentries * 40; if (debugTracker) memTracker.addByLen("Group BtreeNode (" + owner + ")", address, size); }
GroupNode(long address) throws IOException { this.address = address; raf.seek(getFileOffset(address)); if (debugDetail) debugOut.println("--Group Node position=" + raf.getFilePointer()); // header String magic = raf.readString(4); if (!magic.equals("SNOD")) throw new IllegalStateException(magic + " should equal SNOD"); version = raf.readByte(); raf.readByte(); // skip byte nentries = raf.readShort(); if (debugDetail) debugOut.println(" version=" + version + " nentries=" + nentries); long posEntry = raf.getFilePointer(); for (int i = 0; i < nentries; i++) { SymbolTableEntry entry = new SymbolTableEntry(posEntry); posEntry += entry.getSize(); if (entry.objectHeaderAddress != 0) { // LOOK: Probably a bug in HDF5 file format ?? jc July 16 2010 if (debug1) debugOut.printf(" add %s%n", entry); symbols.add(entry); } else { if (debug1) debugOut.printf(" BAD objectHeaderAddress==0 !! %s%n", entry); } } if (debugDetail) debugOut.println("-- Group Node end position=" + raf.getFilePointer()); long size = 8 + nentries * 40; if (debugTracker) memTracker.addByLen("Group BtreeNode (" + owner + ")", address, size); }
LocalHeap(H5Group group, long address) throws IOException { this.group = group; // header information is in le byte order raf.order(RandomAccessFile.LITTLE_ENDIAN); raf.seek(getFileOffset(address)); if (debugDetail) debugOut.println("-- readLocalHeap position=" + raf.getFilePointer()); // header byte[] heapname = new byte[4]; raf.read(heapname); String magic = new String(heapname); if (!magic.equals("HEAP")) throw new IllegalStateException(magic + " should equal HEAP"); version = raf.readByte(); raf.skipBytes(3); size = (int) readLength(); freelistOffset = readLength(); dataAddress = readOffset(); if (debugDetail) debugOut.println(" version=" + version + " size=" + size + " freelistOffset=" + freelistOffset + " heap starts at dataAddress=" + dataAddress); if (debugPos) debugOut.println(" *now at position=" + raf.getFilePointer()); // data raf.seek(getFileOffset(dataAddress)); heap = new byte[size]; raf.read(heap); //if (debugHeap) printBytes( out, "heap", heap, size, true); if (debugDetail) debugOut.println("-- endLocalHeap position=" + raf.getFilePointer()); int hsize = 8 + 2 * sizeLengths + sizeOffsets; if (debugTracker) memTracker.addByLen("Group LocalHeap (" + group.displayName + ")", address, hsize); if (debugTracker) memTracker.addByLen("Group LocalHeapData (" + group.displayName + ")", dataAddress, size); }
LocalHeap(H5Group group, long address) throws IOException { this.group = group; // header information is in le byte order raf.order(RandomAccessFile.LITTLE_ENDIAN); raf.seek(getFileOffset(address)); if (debugDetail) debugOut.println("-- readLocalHeap position=" + raf.getFilePointer()); // header String magic = raf.readString(4); if (!magic.equals("HEAP")) throw new IllegalStateException(magic + " should equal HEAP"); version = raf.readByte(); raf.skipBytes(3); size = (int) readLength(); freelistOffset = readLength(); dataAddress = readOffset(); if (debugDetail) debugOut.println(" version=" + version + " size=" + size + " freelistOffset=" + freelistOffset + " heap starts at dataAddress=" + dataAddress); if (debugPos) debugOut.println(" *now at position=" + raf.getFilePointer()); // data raf.seek(getFileOffset(dataAddress)); heap = new byte[size]; raf.readFully(heap); //if (debugHeap) printBytes( out, "heap", heap, size, true); if (debugDetail) debugOut.println("-- endLocalHeap position=" + raf.getFilePointer()); int hsize = 8 + 2 * sizeLengths + sizeOffsets; if (debugTracker) memTracker.addByLen("Group LocalHeap (" + group.displayName + ")", address, hsize); if (debugTracker) memTracker.addByLen("Group LocalHeapData (" + group.displayName + ")", dataAddress, size); }
this.owner = owner; raf.seek(h5.getFileOffset(address));