Skip to content

Commit ee236a2

Browse files
committed
Adjust code for readHeaderFooter
Return builder instance as result
1 parent 80214f3 commit ee236a2

1 file changed

Lines changed: 43 additions & 43 deletions

File tree

modules/rntuple.mjs

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -680,15 +680,15 @@ class RNTupleDescriptorBuilder {
680680
async function readHeaderFooter(tuple) {
681681
// if already read - return immediately, make possible to call several times
682682
if (tuple?.builder)
683-
return true;
683+
return tuple.builder;
684684

685-
if (!tuple.$file)
686-
return false;
685+
if (!tuple?.$file)
686+
return null;
687687

688688
// request header and footer buffers from the file
689689
return tuple.$file.readBuffer([tuple.fSeekHeader, tuple.fNBytesHeader, tuple.fSeekFooter, tuple.fNBytesFooter]).then(blobs => {
690690
if (blobs?.length !== 2)
691-
return false;
691+
throw new Error('Failure reading header or footer blobs');
692692

693693
// Handle both compressed and uncompressed cases
694694
const processBlob = (blob, uncompressedSize) => {
@@ -701,47 +701,47 @@ async function readHeaderFooter(tuple) {
701701
return Promise.all([
702702
processBlob(blobs[0], tuple.fLenHeader),
703703
processBlob(blobs[1], tuple.fLenFooter)
704-
]).then(unzip_blobs => {
705-
const [header_blob, footer_blob] = unzip_blobs;
706-
if (!header_blob || !footer_blob)
707-
return false;
708-
709-
tuple.builder = new RNTupleDescriptorBuilder;
710-
tuple.builder.deserializeHeader(header_blob);
711-
tuple.builder.deserializeFooter(footer_blob);
712-
713-
// Deserialize Page List
714-
const group = tuple.builder.clusterGroups?.[0];
715-
if (!group || !group.pageListLocator)
716-
throw new Error('No valid cluster group or page list locator found');
717-
718-
const offset = Number(group.pageListLocator.offset),
719-
size = Number(group.pageListLocator.size),
720-
uncompressedSize = Number(group.pageListLength);
721-
722-
return tuple.$file.readBuffer([offset, size]).then(page_list_blob => {
723-
if (!(page_list_blob instanceof DataView))
724-
throw new Error(`Expected DataView from readBuffer, got ${Object.prototype.toString.call(page_list_blob)}`);
725-
726-
// Check if page list data is uncompressed
727-
if (page_list_blob.byteLength === uncompressedSize) {
728-
// Data is uncompressed, use directly
729-
tuple.builder.deserializePageList(page_list_blob);
730-
return true;
731-
}
732-
// Attempt to decompress the page list
733-
return R__unzip(page_list_blob, uncompressedSize).then(unzipped_blob => {
734-
if (!(unzipped_blob instanceof DataView))
735-
throw new Error(`Unzipped page list is not a DataView, got ${Object.prototype.toString.call(unzipped_blob)}`);
736-
737-
tuple.builder.deserializePageList(unzipped_blob);
738-
return true;
739-
});
740-
});
741-
});
704+
]);
705+
}).then(unzip_blobs => {
706+
const [header_blob, footer_blob] = unzip_blobs;
707+
if (!header_blob || !footer_blob)
708+
throw new Error('Failure when uncompress header and footer blobs');
709+
710+
tuple.builder = new RNTupleDescriptorBuilder;
711+
tuple.builder.deserializeHeader(header_blob);
712+
tuple.builder.deserializeFooter(footer_blob);
713+
714+
// Deserialize Page List
715+
const group = tuple.builder.clusterGroups?.[0];
716+
if (!group || !group.pageListLocator)
717+
throw new Error('No valid cluster group or page list locator found');
718+
719+
const offset = Number(group.pageListLocator.offset),
720+
size = Number(group.pageListLocator.size);
721+
722+
return tuple.$file.readBuffer([offset, size]);
723+
}).then(page_list_blob => {
724+
if (!(page_list_blob instanceof DataView))
725+
throw new Error(`Expected DataView from readBuffer, got ${Object.prototype.toString.call(page_list_blob)}`);
726+
727+
const group = tuple.builder.clusterGroups?.[0],
728+
uncompressedSize = Number(group.pageListLength);
729+
730+
// Check if page list data is uncompressed
731+
if (page_list_blob.byteLength === uncompressedSize)
732+
return page_list_blob;
733+
734+
// Attempt to decompress the page list
735+
return R__unzip(page_list_blob, uncompressedSize);
736+
}).then(unzipped_blob => {
737+
if (!(unzipped_blob instanceof DataView))
738+
throw new Error(`Unzipped page list is not a DataView, got ${Object.prototype.toString.call(unzipped_blob)}`);
739+
740+
tuple.builder.deserializePageList(unzipped_blob);
741+
return tuple.builder;
742742
}).catch(err => {
743743
console.error('Error during readHeaderFooter execution:', err);
744-
throw err;
744+
return null;
745745
});
746746
}
747747

0 commit comments

Comments
 (0)