Compare commits

...

4 Commits

Author SHA1 Message Date
Derrick Hammer 7d5f3719f9
*Update dist 2022-12-17 11:03:47 -05:00
Derrick Hammer 76755b4644
*Send all items to the peer we bootstrapped from if we have their connection
*Send all items to the peer we connect to in addPeerHandler only if we are already bootstrapped
*Extract item creation into private helpers
2022-12-17 11:03:29 -05:00
Derrick Hammer 0603c456ae
*Update dist 2022-12-17 10:38:31 -05:00
Derrick Hammer e5b0c92dac
*Subtract us from the peer count in debug 2022-12-17 10:38:14 -05:00
4 changed files with 59 additions and 13 deletions

3
dist/index.d.ts vendored
View File

@ -47,5 +47,8 @@ export default class DHTCache extends EventEmitter {
private _heartbeatCheck;
private _emitHeartbeat;
private _hello;
private _sendItemsToPeer;
private _createAddItemRequestMessage;
private _createAddItemRequest;
}
//# sourceMappingURL=index.d.ts.map

2
dist/index.d.ts.map vendored
View File

@ -1 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAYlC,OAAO,QAAQ,MAAM,oBAAoB,CAAC;AAc1C,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,YAAY;IAChD,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC;IACrB,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,WAAW,CAAW;IAC9B,OAAO,CAAC,iBAAiB,CAAS;IAElC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAa;gBAGtB,KAAK,EAAE,GAAG,EACV,EACE,EAA4B,EAC5B,iBAAsB,EACtB,GAAG,IAAI,EACR,GAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAO;IAuC7C,OAAO,CAAC,MAAM,CAAc;IAE5B,IAAW,KAAK,IAAI,MAAM,EAAE,CAE3B;IAED,IAAW,QAAQ,IAAI,MAAM,EAAE,CAU9B;IAEM,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAOlE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAsBpC,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,iBAAiB;IAIlB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IA2BjD,OAAO,CAAC,OAAO,CAAc;IAE7B,IAAW,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAE/B;IAEM,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM;IAIpC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG;IAInC,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG;IAkClC,iBAAiB,CAAC,IAAI,EAAE,GAAG;IAa3B,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG;IAqBhC,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IA6FpD,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,cAAc;IAmCtB,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,YAAY;IA8CpB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,WAAW;IA0BnB,OAAO,CAAC,eAAe;IA0BvB,OAAO,CAAC,cAAc;IA4BtB,OAAO,CAAC,MAAM;CAIf"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAYlC,OAAO,QAAQ,MAAM,oBAAoB,CAAC;AAc1C,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,YAAY;IAChD,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC;IACrB,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,WAAW,CAAW;IAC9B,OAAO,CAAC,iBAAiB,CAAS;IAElC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAa;gBAGtB,KAAK,EAAE,GAAG,EACV,EACE,EAA4B,EAC5B,iBAAsB,EACtB,GAAG,IAAI,EACR,GAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAO;IAuC7C,OAAO,CAAC,MAAM,CAAc;IAE5B,IAAW,KAAK,IAAI,MAAM,EAAE,CAE3B;IAED,IAAW,QAAQ,IAAI,MAAM,EAAE,CAU9B;IAEM,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAOlE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAkBpC,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,iBAAiB;IAIlB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IA2BjD,OAAO,CAAC,OAAO,CAAc;IAE7B,IAAW,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAE/B;IAEM,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM;IAIpC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG;IAInC,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG;IAmClC,iBAAiB,CAAC,IAAI,EAAE,GAAG;IAa3B,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG;IAqBhC,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAkGpD,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,cAAc;IAmCtB,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,YAAY;IAgDpB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,WAAW;IA0BnB,OAAO,CAAC,eAAe;IA0BvB,OAAO,CAAC,cAAc;IA4BtB,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,4BAA4B;IAKpC,OAAO,CAAC,qBAAqB;CAS9B"}

29
dist/index.js vendored
View File

@ -73,11 +73,7 @@ class DHTCache extends events_1.default {
this._ensureItem(item);
this._addEntityConnection(this.id, item);
const broadcast = () => {
this._broadcastMessage({
type: messages_js_1.Type.ADD_ITEM,
data: b4a_1.default.from(item, "hex"),
signature: this._signItem(item),
});
this._broadcastMessage(this._createAddItemRequest(item));
};
if (!this.bootstrapped) {
this.once("bootstrapped", broadcast);
@ -142,6 +138,7 @@ class DHTCache extends events_1.default {
this.log.debug(`Relay peer connected: ${stringId}`);
}
if (this.bootstrapped) {
this._sendItemsToPeer(peer);
return;
}
this.log.debug(`Broadcasting bootstrap request`);
@ -229,6 +226,9 @@ class DHTCache extends events_1.default {
else if (type === messages_js_1.Type.BOOTSTRAP_RESPONSE) {
const { bootstrap } = decoded;
this._bootstrapFrom(bootstrap);
if (this.swarm._allConnections.has(id)) {
this._sendItemsToPeer(this.swarm._allConnections.get(id));
}
this.log.debug(`Bootstrap response received`);
}
else if (type === messages_js_1.Type.HEARTBEAT) {
@ -361,7 +361,7 @@ class DHTCache extends events_1.default {
}
this._online = online;
this.emit("online", online);
this.log.debug(`Online list updated: ${online.size} network peers online, ${offline.size} network peers offline and removed from DAG`);
this.log.debug(`Online list updated: ${online.size - 1} network peers online, ${offline.size} network peers offline and removed from DAG`);
}
_maybeHexify(data) {
if (b4a_1.default.isBuffer(data)) {
@ -438,5 +438,22 @@ class DHTCache extends events_1.default {
this.send(peer, b4a_1.default.from("hello"));
this.swarm.leavePeer(peer.remotePublicKey);
}
_sendItemsToPeer(peer) {
for (let item of this.cache) {
item = this._maybeHexify(item);
this.send(peer, this._createAddItemRequestMessage(item));
}
}
_createAddItemRequestMessage(item) {
item = this._maybeHexify(item);
return messages_js_1.Message.toBinary(messages_js_1.Message.create(this._createAddItemRequest(item)));
}
_createAddItemRequest(item) {
return {
type: messages_js_1.Type.ADD_ITEM,
data: b4a_1.default.from(item, "hex"),
signature: this._signItem(item),
};
}
}
exports.default = DHTCache;

View File

@ -113,11 +113,7 @@ export default class DHTCache extends EventEmitter {
this._addEntityConnection(this.id, item);
const broadcast = () => {
this._broadcastMessage({
type: Type.ADD_ITEM,
data: b4a.from(item as string, "hex"),
signature: this._signItem(item),
});
this._broadcastMessage(this._createAddItemRequest(item));
};
if (!this.bootstrapped) {
@ -201,6 +197,7 @@ export default class DHTCache extends EventEmitter {
}
if (this.bootstrapped) {
this._sendItemsToPeer(peer);
return;
}
@ -316,6 +313,11 @@ export default class DHTCache extends EventEmitter {
} else if (type === Type.BOOTSTRAP_RESPONSE) {
const { bootstrap } = decoded;
this._bootstrapFrom(bootstrap);
if (this.swarm._allConnections.has(id)) {
this._sendItemsToPeer(this.swarm._allConnections.get(id));
}
this.log.debug(`Bootstrap response received`);
} else if (type === Type.HEARTBEAT) {
const { id: toId, signature, data: bufData } = decoded;
@ -492,7 +494,9 @@ export default class DHTCache extends EventEmitter {
this.emit("online", online);
this.log.debug(
`Online list updated: ${online.size} network peers online, ${offline.size} network peers offline and removed from DAG`
`Online list updated: ${online.size - 1} network peers online, ${
offline.size
} network peers offline and removed from DAG`
);
}
@ -588,4 +592,26 @@ export default class DHTCache extends EventEmitter {
this.send(peer, b4a.from("hello"));
this.swarm.leavePeer(peer.remotePublicKey);
}
private _sendItemsToPeer(peer: any) {
for (let item of this.cache) {
item = this._maybeHexify(item);
this.send(peer, this._createAddItemRequestMessage(item));
}
}
private _createAddItemRequestMessage(item: string | Buffer): Uint8Array {
item = this._maybeHexify(item);
return Message.toBinary(Message.create(this._createAddItemRequest(item)));
}
private _createAddItemRequest(
item: string | Buffer
): PartialMessage<Message> {
return {
type: Type.ADD_ITEM,
data: b4a.from(item as string, "hex"),
signature: this._signItem(item),
};
}
}