hyperdrive-daemon
Version:
A FUSE-mountable distributed filesystem, built on Hyperdrive
37 lines (32 loc) • 901 B
JavaScript
const collectStream = require('stream-collector')
function getHandlers (manager) {
const handlers = {}
const rpcMethods = Object.getOwnPropertyNames(manager.__proto__).filter(methodName => methodName.startsWith('_rpc'))
for (let methodName of rpcMethods) {
let rpcMethodName = methodName.slice(4)
rpcMethodName = rpcMethodName[0].toLowerCase() + rpcMethodName.slice(1)
handlers[rpcMethodName] = manager[methodName].bind(manager)
}
return handlers
}
function dbCollect (index, opts) {
return new Promise((resolve, reject) => {
collectStream(index.createReadStream(opts), (err, list) => {
if (err) return reject(err)
return resolve(list)
})
})
}
async function dbGet (db, idx) {
try {
return await db.get(idx)
} catch (err) {
if (err && !err.notFound) throw err
return null
}
}
module.exports = {
getHandlers,
dbCollect,
dbGet
}