Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const hyperdrive = require('hyperdrive')
- const connect = require('@hyperswarm/replicator')
- const async = require('async')
- const BREAK_THE_REPLICATION = true
- const g = {}
- async.waterfall([
- done => {
- // Create drive 1
- const drive = hyperdrive(`./.tmp/${Math.ceil(Math.random() * 100000).toString()}`)
- drive.ready(() => {
- g.drive1 = drive
- drive.writeFile('/1', 'fff', (err) => {
- drive.writeFile('/3', 'fff', done)
- })
- })
- },
- done => {
- // Create clone of drive 1
- const drive = hyperdrive(`./.tmp/${Math.ceil(Math.random() * 100000).toString()}`, g.drive1.key)
- drive.ready(() => {
- g.drive1_c = drive
- // If this is not done, mount won't show up new writes
- if(!BREAK_THE_REPLICATION) {
- drive.on('update', () => {
- console.log('s')
- setTimeout(() => {
- drive.readdir('/44', () => {})
- }, 50)
- })
- }
- done()
- })
- },
- done => {
- // Create drive 2
- const drive = hyperdrive(`./.tmp/${Math.ceil(Math.random() * 100000).toString()}`)
- drive.ready(() => {
- g.drive2 = drive
- done()
- })
- },
- done => {
- // Connect all drives to the swarm
- g.conn1 = connect(g.drive1, { live: true })
- g.conn2 = connect(g.drive1_c, { live: true })
- g.conn3 = connect(g.drive2, { live: true })
- done()
- },
- done => {
- g.s1 = g.drive1_c.replicate(true, { live: true })
- g.s1.pipe(g.drive2.replicate(false, { live: true })).pipe(g.s1)
- done()
- },
- done => {
- // Wait a little for the interwebz
- setTimeout(() => {
- // Clone of drive 1 should have drive 1's files
- g.drive1_c.readdir('/', (err, list) => {
- console.log(list)
- // Mount the clone of drive 1 to drive 2
- g.drive2.mount('test', g.drive1_c.key, err => {
- done()
- })
- })
- }, 1000)
- },
- done => {
- // Write another file to drive 1
- g.drive1.writeFile('/2', 'baa', (err) => {
- setTimeout(() => {
- // Mounted drive should have bith drive 1's files
- g.drive2.readdir('test', (err, list) => {
- if(err) throw err
- console.log(list) // This should be [ '3', '1', '2' ]
- g.drive2.stats('test/3', (err, stats) => {
- console.log(stats)
- // THIS IS THE PROBLEM PART
- g.drive2.readFile('test/3', (err, data) => {
- if(err) throw err
- console.log(data.toString())
- done()
- })
- })
- })
- }, 1000);
- })
- }
- ])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement