WIP history-keeper fixes
This commit is contained in:
@@ -11,8 +11,14 @@ var Hash = require("../../www/common/common-hash");
|
||||
var CpNetflux = require("../../www/bower_components/chainpad-netflux");
|
||||
var Util = require("../../lib/common-util");
|
||||
|
||||
var createMailbox = function (config, cb) {
|
||||
// you need more than 100 messages in the history, and you need a lastKnownHash between "50" and "length - 50"
|
||||
|
||||
var createMailbox = function (config, _cb) {
|
||||
var cb = Util.once(Util.mkAsync(_cb));
|
||||
|
||||
var webchannel;
|
||||
var user = config.user;
|
||||
user.messages = [];
|
||||
|
||||
CpNetflux.start({
|
||||
network: config.network,
|
||||
@@ -21,11 +27,16 @@ var createMailbox = function (config, cb) {
|
||||
owners: [ config.edPublic ],
|
||||
|
||||
noChainPad: true,
|
||||
|
||||
lastKnownHash: config.lastKnownHash,
|
||||
onChannelError: function (err) {
|
||||
cb(err);
|
||||
},
|
||||
onConnect: function (wc /*, sendMessage */) {
|
||||
webchannel = wc;
|
||||
},
|
||||
onMessage: function (/* msg, user, vKey, isCp, hash, author */) {
|
||||
|
||||
onMessage: function (msg /*, user, vKey, isCp, hash, author */) {
|
||||
user.messages.push(msg);
|
||||
},
|
||||
onReady: function () {
|
||||
cb(void 0, webchannel);
|
||||
@@ -37,6 +48,8 @@ process.on('unhandledRejection', function (err) {
|
||||
console.error(err);
|
||||
});
|
||||
|
||||
var state = {};
|
||||
|
||||
var makeCurveKeys = function () {
|
||||
var pair = Nacl.box.keyPair();
|
||||
return {
|
||||
@@ -53,6 +66,10 @@ var makeEdKeys = function () {
|
||||
};
|
||||
};
|
||||
|
||||
var edKeys = makeEdKeys();
|
||||
var curveKeys = makeCurveKeys();
|
||||
var mailboxChannel = Hash.createChannelId();
|
||||
|
||||
var createUser = function (config, cb) {
|
||||
// config should contain keys for a team rpc (ed)
|
||||
// teamEdKeys
|
||||
@@ -75,11 +92,11 @@ var createUser = function (config, cb) {
|
||||
// make all the parameters you'll need
|
||||
|
||||
var network = user.network = user.config.network;
|
||||
user.edKeys = makeEdKeys();
|
||||
user.edKeys = edKeys;
|
||||
user.curveKeys = curveKeys;
|
||||
|
||||
user.curveKeys = makeCurveKeys();
|
||||
user.mailbox = Mailbox.createEncryptor(user.curveKeys);
|
||||
user.mailboxChannel = Hash.createChannelId();
|
||||
user.mailboxChannel = mailboxChannel;
|
||||
|
||||
// create an anon rpc for alice
|
||||
Rpc.createAnonymous(network, w(function (err, rpc) {
|
||||
@@ -109,6 +126,11 @@ var createUser = function (config, cb) {
|
||||
}).nThen(function (w) {
|
||||
// create and subscribe to your mailbox
|
||||
createMailbox({
|
||||
user: user,
|
||||
|
||||
|
||||
lastKnownHash: config.lastKnownHash,
|
||||
|
||||
network: user.network,
|
||||
channel: user.mailboxChannel,
|
||||
crypto: user.mailbox,
|
||||
@@ -116,8 +138,9 @@ var createUser = function (config, cb) {
|
||||
}, w(function (err /*, wc*/) {
|
||||
if (err) {
|
||||
w.abort();
|
||||
console.error("Mailbox creation error");
|
||||
process.exit(1);
|
||||
//console.error("Mailbox creation error");
|
||||
cb(err);
|
||||
//process.exit(1);
|
||||
}
|
||||
//wc.leave();
|
||||
}));
|
||||
@@ -135,14 +158,10 @@ var createUser = function (config, cb) {
|
||||
|
||||
var alice;
|
||||
|
||||
var sharedConfig = {
|
||||
teamEdKeys: makeEdKeys(),
|
||||
teamCurveKeys: makeCurveKeys(),
|
||||
rosterSeed: Crypto.Team.createSeed(),
|
||||
};
|
||||
|
||||
nThen(function (w) {
|
||||
createUser(sharedConfig, w(function (err, _alice) {
|
||||
createUser({
|
||||
//sharedConfig
|
||||
}, w(function (err, _alice) {
|
||||
if (err) {
|
||||
w.abort();
|
||||
return void console.log(err);
|
||||
@@ -163,13 +182,18 @@ nThen(function (w) {
|
||||
var i = 0;
|
||||
var next = w();
|
||||
|
||||
state.hashes = [];
|
||||
|
||||
var send = function () {
|
||||
if (i++ >= 300) { return next(); }
|
||||
if (i++ >= 160) { return next(); }
|
||||
|
||||
var msg = alice.mailbox.encrypt(JSON.stringify({
|
||||
pewpew: 'bangbang',
|
||||
}), alice.curveKeys.curvePublic);
|
||||
|
||||
var hash = msg.slice(0, 64);
|
||||
state.hashes.push(hash);
|
||||
|
||||
alice.anonRpc.send('WRITE_PRIVATE_MESSAGE', [
|
||||
alice.mailboxChannel,
|
||||
msg
|
||||
@@ -177,10 +201,33 @@ nThen(function (w) {
|
||||
], w(function (err) {
|
||||
if (err) { throw new Error(err); }
|
||||
console.log('message %s written successfully', i);
|
||||
setTimeout(send, 250);
|
||||
setTimeout(send, 15);
|
||||
}));
|
||||
};
|
||||
send();
|
||||
}).nThen(function (w) {
|
||||
console.log("Connecting with second user");
|
||||
createUser({
|
||||
lastKnownHash: state.hashes[55],
|
||||
}, w(function (err, _alice) {
|
||||
if (err) {
|
||||
w.abort();
|
||||
console.log("lastKnownHash: ", state.hashes[55]);
|
||||
console.log(err);
|
||||
process.exit(1);
|
||||
//return void console.log(err);
|
||||
}
|
||||
var user = state.alice2 = _alice;
|
||||
|
||||
if (user.messages.length === 105) {
|
||||
process.exit(0);
|
||||
}
|
||||
//console.log(user.messages, user.messages.length);
|
||||
process.exit(1);
|
||||
}));
|
||||
}).nThen(function () {
|
||||
|
||||
|
||||
}).nThen(function () {
|
||||
alice.cleanup();
|
||||
//bob.cleanup();
|
||||
|
||||
Reference in New Issue
Block a user