Partition bytes into several Hypercore feeds
$ npm install hypercore-multipart
const multipart = require('hypercore-multipart')
const Corestore = require('corestore')
const fs = require('fs')
const corestore = new Corestore(ram)
fs.open('/path/to/file', (err, fd) => {
multipart({ read, pageSize: 5 * 1024 * 1024, bufferSize: 4096 }, (err, parts) => {
// `parts` is an array of hypercores with a byteLength at most `pageSize`
})
function read(offset, length, callback) {
const buffer = Buffer.alloc(length)
fs.read(fd, buffer, 0, length, offset, (err) => callback(err, buffer))
}
})
Reads bytes from a source partitioning chunks into Hypercore feeds where
calling callback(err, parts)
with an error if one occurs or parts
,
an array of hypercore feeds. opts
can be:
{
bufferSize: 4096, // how big the read buffers should be
pageSize: 10 * 1024 * 1024, // how big the hypercore feeds should be
offset: 0, // the initial offset to start reading at
corestore: null, // a corestore instance for hypercore creation
masterKey: crypto.randomBytes(32), // the master key for key derivation
namespace: 'multipart', // the namespace for key derivation
read: null, // a function that accepts an offset, length, and callback to read bytes from a source
stat: null, // a function that explicitly resolves the size of the source
onpage(page, hypercore), // a function that is called upon cycling to a new page (hypercore)
}
The read buffer size for the multipart state.
The size for each page (hypercore feed) for the multipart state.
The current read offset for the multipart state.
The number of blocks in the multipart state.
The current page of the multipart state.
Stats (if available) for the multipart state.
The master key for the multipart state.
MIT