db.append = wait(function (opts, cb) { try { var content = opts.content var recps = opts.content.recps if (recps) { const isNonEmptyArrayOfFeeds = isArray(recps) && recps.every(isFeed) && recps.length > 0 if (isFeed(recps) || isNonEmptyArrayOfFeeds) { recps = opts.content.recps = [].concat(recps) // force to array content = opts.content = box(opts.content, recps) } else { const errMsg = 'private message recipients must be valid, was:' + JSON.stringify(recps) throw new Error(errMsg) } } var msg = V.create( state.feeds[opts.keys.id], opts.keys, opts.hmacKey || hmacKey, content, timestamp() ) } catch (err) { cb(err) return } queue(msg, function (err) { if (err) return cb(err) var data = state.queue[state.queue.length - 1] flush.push(function () { cb(null, data) }) }) })
tape('generate', function (t) { var start = Date.now() var l = N state = V.append(state, null, MSG.value) console.log(state) while (l--) { if (!(l % 1000)) console.log(l) var keys = K[~~(Math.random() * K.length)] var content = { date: Date.now(), random: Math.random(), type: 'test' } var msg = V.create( state.feeds[keys.id], keys, null, content, timestamp() ) state = V.append(state, null, msg) if (state.error) throw explain(state.error, 'error on generate') } console.log('generate', N / ((Date.now() - start) / 1000)) t.end() })