@libp2p/floodsub 0.29.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/index.d.ts +15 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +31 -12
- package/dist/src/index.js.map +1 -1
- package/dist/src/message/rpc.d.ts +669 -0
- package/dist/src/message/rpc.js +1876 -0
- package/package.json +20 -12
- package/src/index.ts +37 -14
- package/src/message/rpc.d.ts +669 -0
- package/src/message/rpc.js +1876 -0
- package/src/message/rpc.proto +52 -0
package/dist/src/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PubSubBaseProtocol } from '@libp2p/pubsub';
|
|
2
2
|
import { multicodec } from './config.js';
|
|
3
3
|
import { SimpleTimeCache } from './cache.js';
|
|
4
|
-
import type { PubSub,
|
|
4
|
+
import type { PubSub, PubSubInit, Message, PubSubRPC, PubSubRPCMessage } from '@libp2p/interfaces/pubsub';
|
|
5
5
|
import type { PeerId } from '@libp2p/interfaces/peer-id';
|
|
6
6
|
export { multicodec };
|
|
7
|
-
export interface
|
|
7
|
+
export interface FloodSubInit extends PubSubInit {
|
|
8
8
|
seenTTL?: number;
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
@@ -12,9 +12,19 @@ export interface FloodSubOptions extends PubSubOptions {
|
|
|
12
12
|
* delivering an API for Publish/Subscribe, but with no CastTree Forming
|
|
13
13
|
* (it just floods the network).
|
|
14
14
|
*/
|
|
15
|
-
export declare class FloodSub
|
|
15
|
+
export declare class FloodSub extends PubSubBaseProtocol implements PubSub {
|
|
16
16
|
seenCache: SimpleTimeCache<boolean>;
|
|
17
|
-
constructor(
|
|
17
|
+
constructor(init?: FloodSubInit);
|
|
18
|
+
/**
|
|
19
|
+
* Decode a Uint8Array into an RPC object
|
|
20
|
+
*/
|
|
21
|
+
decodeRpc(bytes: Uint8Array): PubSubRPC;
|
|
22
|
+
/**
|
|
23
|
+
* Encode an RPC object into a Uint8Array
|
|
24
|
+
*/
|
|
25
|
+
encodeRpc(rpc: PubSubRPC): Uint8Array;
|
|
26
|
+
decodeMessage(bytes: Uint8Array): PubSubRPCMessage;
|
|
27
|
+
encodeMessage(rpc: PubSubRPCMessage): Uint8Array;
|
|
18
28
|
/**
|
|
19
29
|
* Process incoming message
|
|
20
30
|
* Extends base implementation to check router cache.
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AACzG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAMxD,OAAO,EAAE,UAAU,EAAE,CAAA;AAErB,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,kBAAmB,YAAW,MAAM;IACzD,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,CAAA;gBAE7B,IAAI,CAAC,EAAE,YAAY;IAiBhC;;OAEG;IACH,SAAS,CAAE,KAAK,EAAE,UAAU,GAAG,SAAS;IAIxC;;OAEG;IACH,SAAS,CAAE,GAAG,EAAE,SAAS,GAAG,UAAU;IAItC,aAAa,CAAE,KAAK,EAAE,UAAU,GAAG,gBAAgB;IAInD,aAAa,CAAE,GAAG,EAAE,gBAAgB,GAAG,UAAU;IAIjD;;;OAGG;IACG,cAAc,CAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAcpD;;OAEG;IACG,cAAc,CAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;CAwBrD"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import { toString } from 'uint8arrays/to-string';
|
|
2
|
-
import {
|
|
2
|
+
import { PubSubBaseProtocol } from '@libp2p/pubsub';
|
|
3
3
|
import { multicodec } from './config.js';
|
|
4
4
|
import { SimpleTimeCache } from './cache.js';
|
|
5
|
-
|
|
5
|
+
import { logger } from '@libp2p/logger';
|
|
6
|
+
import { RPC } from './message/rpc.js';
|
|
7
|
+
const log = logger('libp2p:floodsub');
|
|
6
8
|
export { multicodec };
|
|
7
9
|
/**
|
|
8
10
|
* FloodSub (aka dumbsub is an implementation of pubsub focused on
|
|
9
11
|
* delivering an API for Publish/Subscribe, but with no CastTree Forming
|
|
10
12
|
* (it just floods the network).
|
|
11
13
|
*/
|
|
12
|
-
export class FloodSub extends
|
|
13
|
-
constructor(
|
|
14
|
+
export class FloodSub extends PubSubBaseProtocol {
|
|
15
|
+
constructor(init) {
|
|
14
16
|
super({
|
|
15
|
-
...
|
|
16
|
-
debugName: debugName,
|
|
17
|
+
...init,
|
|
17
18
|
canRelayMessage: true,
|
|
18
19
|
multicodecs: [multicodec]
|
|
19
20
|
});
|
|
@@ -23,9 +24,27 @@ export class FloodSub extends PubsubBaseProtocol {
|
|
|
23
24
|
* @type {TimeCache}
|
|
24
25
|
*/
|
|
25
26
|
this.seenCache = new SimpleTimeCache({
|
|
26
|
-
validityMs:
|
|
27
|
+
validityMs: init?.seenTTL ?? 30000
|
|
27
28
|
});
|
|
28
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Decode a Uint8Array into an RPC object
|
|
32
|
+
*/
|
|
33
|
+
decodeRpc(bytes) {
|
|
34
|
+
return RPC.decode(bytes);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Encode an RPC object into a Uint8Array
|
|
38
|
+
*/
|
|
39
|
+
encodeRpc(rpc) {
|
|
40
|
+
return RPC.encode(rpc).finish();
|
|
41
|
+
}
|
|
42
|
+
decodeMessage(bytes) {
|
|
43
|
+
return RPC.Message.decode(bytes);
|
|
44
|
+
}
|
|
45
|
+
encodeMessage(rpc) {
|
|
46
|
+
return RPC.Message.encode(rpc).finish();
|
|
47
|
+
}
|
|
29
48
|
/**
|
|
30
49
|
* Process incoming message
|
|
31
50
|
* Extends base implementation to check router cache.
|
|
@@ -46,19 +65,19 @@ export class FloodSub extends PubsubBaseProtocol {
|
|
|
46
65
|
async publishMessage(from, message) {
|
|
47
66
|
const peers = this.getSubscribers(message.topic);
|
|
48
67
|
if (peers == null || peers.length === 0) {
|
|
49
|
-
|
|
68
|
+
log('no peers are subscribed to topic %s', message.topic);
|
|
50
69
|
return;
|
|
51
70
|
}
|
|
52
71
|
peers.forEach(id => {
|
|
53
|
-
if (this.
|
|
54
|
-
|
|
72
|
+
if (this.components.getPeerId().equals(id)) {
|
|
73
|
+
log('not sending message on topic %s to myself', message.topic);
|
|
55
74
|
return;
|
|
56
75
|
}
|
|
57
76
|
if (id.equals(from)) {
|
|
58
|
-
|
|
77
|
+
log('not sending message on topic %s to sender %p', message.topic, id);
|
|
59
78
|
return;
|
|
60
79
|
}
|
|
61
|
-
|
|
80
|
+
log('publish msgs on topics %s %p', message.topic, id);
|
|
62
81
|
this.send(id, { messages: [message] });
|
|
63
82
|
});
|
|
64
83
|
}
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|