Eventlog example. Cleanup code.

This commit is contained in:
haad
2016-10-04 09:27:15 +02:00
parent 61af69678f
commit 84e984a4cb
2 changed files with 26 additions and 64 deletions

View File

@@ -1,65 +1,30 @@
'use strict';
'use strict'
const async = require('asyncawait/async');
const await = require('asyncawait/await');
const ipfsd = require('ipfsd-ctl');
const OrbitDB = require('../src/OrbitDB');
const Timer = require('./Timer');
const IpfsApi = require('ipfs-api')
const OrbitDB = require('../src/OrbitDB')
// usage: reader.js <network hash> <username> <channel> <data> <interval in ms>
const ipfs = IpfsApi('localhost', '5001')
const orbitdb = new OrbitDB(ipfs)
const db = orbitdb.eventlog("/orbit-db/examples/eventlog-example")
// orbit-server
const network = 'QmYPobvobKsyoCKTw476yTui611XABf927KxUPCf4gRLRr'; // 'localhost:3333'
const username = process.argv[2] ? process.argv[2] : 'testrunner';
const password = '';
const channelName = process.argv[3] ? process.argv[3] : 'c2';
const prefix = process.argv[4] ? process.argv[4] : 'Hello';
const creatures = ['🐙', '🐷', '🐬', '🐞', '🐈', '🙉', '🐸', '🐓']
const startIpfs = () => {
return new Promise((resolve, reject) => {
ipfsd.disposableApi((err, ipfs) => {
if(err) console.error(err);
resolve(ipfs);
});
});
};
const query = () => {
const index = Math.floor(Math.random() * creatures.length)
db.add(creatures[index])
.then(() => {
const latest = db.iterator({ limit: 5 }).collect()
let output = ``
output += `---------------------------------------------------\n`
output += `Latest Visitors\n`
output += `---------------------------------------------------\n`
output += latest.reverse().map((e) => e.payload.value).join('\n') + `\n`
console.log(output)
})
.catch((e) => {
console.error(e.stack)
console.log("Make sure you have an IPFS daemon running at localhost:5001")
})
}
let run = (async(() => {
try {
const ipfs = await(startIpfs());
const orbit = await(OrbitDB.connect(network, username, password, ipfs));
const db = await(orbit.eventlog(channelName));
let count = 1;
let running = false;
setInterval(async(() => {
if(!running) {
running = true;
let timer = new Timer(true);
await(db.add(prefix + count));
console.log(`Query #${count} took ${timer.stop(true)} ms\n`);
let timer2 = new Timer(true);
let items = db.iterator({ limit: -1 }).collect();
console.log("----------------------------------------------------------------------------------------")
console.log("Hash | Timestamp | Value")
console.log("----------------------------------------------------------------------------------------")
console.log(items.map((e) => `${e.hash} | ${e.meta.ts} | ${e.value}`).join("\n"));
console.log("----------------------------------------------------------------------------------------")
console.log(`Query 2 #${count} took ${timer2.stop(true)} ms\n`);
running = false;
count ++;
}
}), process.argv[6] ? process.argv[6] : 1000);
} catch(e) {
console.error(e.stack);
console.log("Exiting...")
process.exit(1);
}
}))();
module.exports = run;
setInterval(query, 1000)

View File

@@ -11,7 +11,7 @@ const Pubsub = require('orbit-db-pubsub')
const Cache = require('./Cache')
class OrbitDB {
constructor(ipfs, id, options) {
constructor(ipfs, id = 'default', options = {}) {
this._ipfs = ipfs
this._pubsub = options && options.broker ? new options.broker(ipfs) : new Pubsub(ipfs)
this.user = { id: id }
@@ -52,15 +52,12 @@ class OrbitDB {
/* Private methods */
_createStore(Store, dbname, options = { subscribe: true }) {
// if(!options) options = {}
// const replicate = options.subscribe !== undefined ? options.subscribe : true
const store = new Store(this._ipfs, this.user.id, dbname, options)
this.stores[dbname] = store
return this._subscribe(store, dbname, options.subscribe, options)
}
_subscribe(store, dbname, subscribe = true, options) {
// if(subscribe === undefined) subscribe = true
store.events.on('data', this._onData.bind(this))
store.events.on('write', this._onWrite.bind(this))
store.events.on('close', this._onClose.bind(this))