beaker-plugin-dat
Version:
Dat-protocol plugin for the Beaker browser
22 lines (19 loc) • 1.03 kB
JavaScript
const log = require('loglevel')
// helper function to wire up all archive events to the given emitter
module.exports = function (emitter, archive) {
var key = archive.key.toString('hex')
// initialize all trackers
track(archive.metadata, 'metadata')
archive.metadata.on('peer-add', () => emitter.emit('update-peers', { key, peers: archive.metadata.peers.length }))
archive.metadata.on('peer-remove', () => emitter.emit('update-peers', { key, peers: archive.metadata.peers.length }))
archive.open(err => track(archive.content, 'content', err))
function track (feed, name, err) {
if (err)
log.error('[DAT] Error opening archive', err)
if (feed) {
// feed.on('update', () => emitter.emit('update-blocks', { key, feed: name, bitfield: feed.bitfield.buffer }))
feed.on('download', (index, data) => emitter.emit('download', { key, feed: name, index, bytes: data.length }))
feed.on('upload', (index, data) => emitter.emit('upload', { key, feed: name, index, bytes: data.length }))
}
}
}