Skip to content

Commit 2abd185

Browse files
Slight progress on chord translation
1 parent 688ed60 commit 2abd185

File tree

2 files changed

+44
-12
lines changed

2 files changed

+44
-12
lines changed

js_src/chord.js

+25-4
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ m.get_hashes = function get_hashes(key) {
6969
// get SHA384
7070
ret.push(BigInt(base.SHA384(key), 16));
7171
// get SHA512
72-
hash = new SHA("SHA-224", "ARRAYBUFFER");
72+
hash = new SHA("SHA-512", "ARRAYBUFFER");
7373
hash.update(key);
7474
ret.push(BigInt(hash.getHash("HEX"), 16));
7575
return ret;
@@ -254,6 +254,23 @@ m.chord_socket = class chord_socket extends mesh.mesh_socket {
254254
catch(e) {}
255255
}
256256

257+
join() {
258+
this.leeching = false;
259+
for (let handler in this.awaiting_ids) {
260+
this._send_handshake(handler);
261+
this._send_peers(handler);
262+
this._send_meta(handler);
263+
}
264+
for (let key in Object.keys(this.routing_table)) {
265+
let handler = this.routing_table[key];
266+
if (handler) {
267+
this._send_handshake(handler);
268+
this._send_peers(handler);
269+
this._send_meta(handler);
270+
}
271+
}
272+
}
273+
257274
_send_meta(handler) {
258275
handler.send(base.flags.whisper, [base.flags.handshake, this.leeching ? '1' : '0']);
259276
for (let key in this.__keys) {
@@ -280,7 +297,7 @@ m.chord_socket = class chord_socket extends mesh.mesh_socket {
280297
let beg = tuple[0];
281298
let mid = tuple[1];
282299
let end = tuple[2];
283-
if (m.distance(beg.id_10, end.id_10) < gap && mid.outgoing) {
300+
if (m.distance(beg.id_10, end.id_10).lesser(gap) && mid.outgoing) {
284301
gap = m.distance(beg.id_10, end.id_10);
285302
narrowest = mid;
286303
}
@@ -447,11 +464,11 @@ m.chord_socket = class chord_socket extends mesh.mesh_socket {
447464
}
448465
else {
449466
node.send(base.flags.whisper, [base.flags.retrieve, method, base.to_base_58(key)]);
450-
ret = new awaiting_value();
467+
let ret = new awaiting_value();
451468
if (handler) {
452469
ret.callback = handler;
453470
}
454-
this.requests[[method, to_base_58(key)]] = ret;
471+
this.requests[[method, base.to_base_58(key)]] = ret;
455472
return ret;
456473
}
457474
}
@@ -475,19 +492,23 @@ m.chord_socket = class chord_socket extends mesh.mesh_socket {
475492
return new Promise((fulfill, reject) => {
476493
function check() {
477494
if (fails.has(common) && iters < limit) {
495+
console.log('if');
478496
setTimeout(check, 100);
479497
iters += 1
480498
ctuple = most_common(vals);
481499
common = ctuple[0];
482500
count = ctuple[1];
483501
}
484502
else if (!fails.has(common) && count > 2) {
503+
console.log('fulfill');
485504
fulfill(common);
486505
}
487506
else if (iters === limit) {
507+
console.log('timeout');
488508
reject(new Error("Time out"));
489509
}
490510
else {
511+
console.log('else');
491512
reject(new Error(`This key does not have an agreed-upon value. values=${vals}, count=${count}, majority=3, most common=${common}`));
492513
}
493514
}

js_src/mesh.js

+19-8
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ m.mesh_socket = class mesh_socket extends base.base_socket {
223223

224224
__on_TCP_Connection(sock) {
225225
var conn = new this.conn_type(sock, this, false);
226-
this._send_peers(conn);
226+
this._send_handshake(conn);
227227
this.awaiting_ids.push(conn);
228228
return conn;
229229
}
@@ -232,7 +232,7 @@ m.mesh_socket = class mesh_socket extends base.base_socket {
232232
var conn = new this.conn_type(sock, this, false);
233233
const self = this;
234234
sock.on("connect", ()=>{
235-
self._send_peers(conn);
235+
self._send_handshake(conn);
236236
});
237237
this.awaiting_ids.push(conn);
238238
return conn;
@@ -264,9 +264,20 @@ m.mesh_socket = class mesh_socket extends base.base_socket {
264264
return ret;
265265
}
266266

267-
_send_peers(handler) {
267+
_send_handshake(handler) {
268268
/**
269-
* .. js:function:: js2p.mesh.mesh_socket._send_peers(handler)
269+
* .. js:function:: js2p.mesh.mesh_socket._send_handshake(handler)
270+
*
271+
* Shortcut method to send a handshake response. This method is extracted from
272+
* :js:meth:`~js2p.mesh.mesh_socket.__handle_handshake` in order to allow cleaner
273+
* inheritence from :js:class:`js2p.sync.sync_socket`
274+
*/
275+
handler.send(base.flags.whisper, [base.flags.whisper, JSON.stringify(this.__get_peer_list())]);
276+
}
277+
278+
_send_handshake(handler) {
279+
/**
280+
* .. js:function:: js2p.mesh.mesh_socket._send_handshake(handler)
270281
*
271282
* Shortcut method to send a handshake response. This method is extracted from
272283
* :js:meth:`~js2p.mesh.mesh_socket.__handle_handshake` in order to allow cleaner
@@ -333,12 +344,12 @@ m.mesh_socket = class mesh_socket extends base.base_socket {
333344
var self = this;
334345
if (conn.on) {
335346
conn.on('connect', ()=>{
336-
self._send_peers(handler);
347+
self._send_handshake(handler);
337348
})
338349
}
339350
else {
340351
var onopen = ()=>{
341-
this._send_peers(handler);
352+
this._send_handshake(handler);
342353
}
343354
if (conn.readyState === 1) {
344355
onopen();
@@ -349,11 +360,11 @@ m.mesh_socket = class mesh_socket extends base.base_socket {
349360
else if (this.protocol.encryption === 'SSL') {
350361
const self = this;
351362
conn.on('secureConnect', ()=>{
352-
self._send_peers(handler);
363+
self._send_handshake(handler);
353364
})
354365
}
355366
else {
356-
this._send_peers(handler);
367+
this._send_handshake(handler);
357368
}
358369
if (id) {
359370
this.routing_table[id] = handler;

0 commit comments

Comments
 (0)