@streamr/trackerless-network 103.1.2 → 103.2.0-experiment.0

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.
Files changed (172) hide show
  1. package/dist/exports.cjs +4489 -0
  2. package/dist/exports.cjs.map +1 -0
  3. package/dist/exports.d.ts +1391 -0
  4. package/dist/exports.js +4477 -0
  5. package/dist/exports.js.map +1 -0
  6. package/package.json +25 -18
  7. package/dist/generated/google/protobuf/any.d.ts +0 -180
  8. package/dist/generated/google/protobuf/any.js +0 -155
  9. package/dist/generated/google/protobuf/any.js.map +0 -1
  10. package/dist/generated/google/protobuf/empty.d.ts +0 -31
  11. package/dist/generated/google/protobuf/empty.js +0 -45
  12. package/dist/generated/google/protobuf/empty.js.map +0 -1
  13. package/dist/generated/google/protobuf/timestamp.d.ts +0 -156
  14. package/dist/generated/google/protobuf/timestamp.js +0 -136
  15. package/dist/generated/google/protobuf/timestamp.js.map +0 -1
  16. package/dist/generated/packages/dht/protos/DhtRpc.client.d.ts +0 -371
  17. package/dist/generated/packages/dht/protos/DhtRpc.client.js +0 -292
  18. package/dist/generated/packages/dht/protos/DhtRpc.client.js.map +0 -1
  19. package/dist/generated/packages/dht/protos/DhtRpc.d.ts +0 -1031
  20. package/dist/generated/packages/dht/protos/DhtRpc.js +0 -702
  21. package/dist/generated/packages/dht/protos/DhtRpc.js.map +0 -1
  22. package/dist/generated/packages/dht/protos/DhtRpc.server.d.ts +0 -168
  23. package/dist/generated/packages/dht/protos/DhtRpc.server.js +0 -3
  24. package/dist/generated/packages/dht/protos/DhtRpc.server.js.map +0 -1
  25. package/dist/generated/packages/proto-rpc/protos/ProtoRpc.d.ts +0 -87
  26. package/dist/generated/packages/proto-rpc/protos/ProtoRpc.js +0 -66
  27. package/dist/generated/packages/proto-rpc/protos/ProtoRpc.js.map +0 -1
  28. package/dist/generated/packages/trackerless-network/protos/NetworkRpc.client.d.ts +0 -237
  29. package/dist/generated/packages/trackerless-network/protos/NetworkRpc.client.js +0 -190
  30. package/dist/generated/packages/trackerless-network/protos/NetworkRpc.client.js.map +0 -1
  31. package/dist/generated/packages/trackerless-network/protos/NetworkRpc.d.ts +0 -687
  32. package/dist/generated/packages/trackerless-network/protos/NetworkRpc.js +0 -479
  33. package/dist/generated/packages/trackerless-network/protos/NetworkRpc.js.map +0 -1
  34. package/dist/generated/packages/trackerless-network/protos/NetworkRpc.server.d.ts +0 -102
  35. package/dist/generated/packages/trackerless-network/protos/NetworkRpc.server.js +0 -3
  36. package/dist/generated/packages/trackerless-network/protos/NetworkRpc.server.js.map +0 -1
  37. package/dist/package.json +0 -56
  38. package/dist/src/ContentDeliveryManager.d.ts +0 -82
  39. package/dist/src/ContentDeliveryManager.js +0 -325
  40. package/dist/src/ContentDeliveryManager.js.map +0 -1
  41. package/dist/src/NetworkNode.d.ts +0 -44
  42. package/dist/src/NetworkNode.js +0 -98
  43. package/dist/src/NetworkNode.js.map +0 -1
  44. package/dist/src/NetworkStack.d.ts +0 -36
  45. package/dist/src/NetworkStack.js +0 -165
  46. package/dist/src/NetworkStack.js.map +0 -1
  47. package/dist/src/NodeInfoClient.d.ts +0 -9
  48. package/dist/src/NodeInfoClient.js +0 -21
  49. package/dist/src/NodeInfoClient.js.map +0 -1
  50. package/dist/src/NodeInfoRpcLocal.d.ts +0 -12
  51. package/dist/src/NodeInfoRpcLocal.js +0 -22
  52. package/dist/src/NodeInfoRpcLocal.js.map +0 -1
  53. package/dist/src/NodeInfoRpcRemote.d.ts +0 -6
  54. package/dist/src/NodeInfoRpcRemote.js +0 -11
  55. package/dist/src/NodeInfoRpcRemote.js.map +0 -1
  56. package/dist/src/StreamPartNetworkSplitAvoidance.d.ts +0 -18
  57. package/dist/src/StreamPartNetworkSplitAvoidance.js +0 -74
  58. package/dist/src/StreamPartNetworkSplitAvoidance.js.map +0 -1
  59. package/dist/src/StreamPartReconnect.d.ts +0 -11
  60. package/dist/src/StreamPartReconnect.js +0 -37
  61. package/dist/src/StreamPartReconnect.js.map +0 -1
  62. package/dist/src/content-delivery-layer/ContentDeliveryLayerNode.d.ts +0 -78
  63. package/dist/src/content-delivery-layer/ContentDeliveryLayerNode.js +0 -240
  64. package/dist/src/content-delivery-layer/ContentDeliveryLayerNode.js.map +0 -1
  65. package/dist/src/content-delivery-layer/ContentDeliveryRpcLocal.d.ts +0 -23
  66. package/dist/src/content-delivery-layer/ContentDeliveryRpcLocal.js +0 -40
  67. package/dist/src/content-delivery-layer/ContentDeliveryRpcLocal.js.map +0 -1
  68. package/dist/src/content-delivery-layer/ContentDeliveryRpcRemote.d.ts +0 -11
  69. package/dist/src/content-delivery-layer/ContentDeliveryRpcRemote.js +0 -38
  70. package/dist/src/content-delivery-layer/ContentDeliveryRpcRemote.js.map +0 -1
  71. package/dist/src/content-delivery-layer/DuplicateMessageDetector.d.ts +0 -55
  72. package/dist/src/content-delivery-layer/DuplicateMessageDetector.js +0 -159
  73. package/dist/src/content-delivery-layer/DuplicateMessageDetector.js.map +0 -1
  74. package/dist/src/content-delivery-layer/NodeList.d.ts +0 -26
  75. package/dist/src/content-delivery-layer/NodeList.js +0 -93
  76. package/dist/src/content-delivery-layer/NodeList.js.map +0 -1
  77. package/dist/src/content-delivery-layer/createContentDeliveryLayerNode.d.ts +0 -14
  78. package/dist/src/content-delivery-layer/createContentDeliveryLayerNode.js +0 -129
  79. package/dist/src/content-delivery-layer/createContentDeliveryLayerNode.js.map +0 -1
  80. package/dist/src/content-delivery-layer/formStreamPartDeliveryServiceId.d.ts +0 -3
  81. package/dist/src/content-delivery-layer/formStreamPartDeliveryServiceId.js +0 -9
  82. package/dist/src/content-delivery-layer/formStreamPartDeliveryServiceId.js.map +0 -1
  83. package/dist/src/content-delivery-layer/inspection/InspectSession.d.ts +0 -19
  84. package/dist/src/content-delivery-layer/inspection/InspectSession.js +0 -43
  85. package/dist/src/content-delivery-layer/inspection/InspectSession.js.map +0 -1
  86. package/dist/src/content-delivery-layer/inspection/Inspector.d.ts +0 -30
  87. package/dist/src/content-delivery-layer/inspection/Inspector.js +0 -75
  88. package/dist/src/content-delivery-layer/inspection/Inspector.js.map +0 -1
  89. package/dist/src/content-delivery-layer/neighbor-discovery/HandshakeRpcLocal.d.ts +0 -29
  90. package/dist/src/content-delivery-layer/neighbor-discovery/HandshakeRpcLocal.js +0 -106
  91. package/dist/src/content-delivery-layer/neighbor-discovery/HandshakeRpcLocal.js.map +0 -1
  92. package/dist/src/content-delivery-layer/neighbor-discovery/HandshakeRpcRemote.d.ts +0 -14
  93. package/dist/src/content-delivery-layer/neighbor-discovery/HandshakeRpcRemote.js +0 -55
  94. package/dist/src/content-delivery-layer/neighbor-discovery/HandshakeRpcRemote.js.map +0 -1
  95. package/dist/src/content-delivery-layer/neighbor-discovery/Handshaker.d.ts +0 -32
  96. package/dist/src/content-delivery-layer/neighbor-discovery/Handshaker.js +0 -149
  97. package/dist/src/content-delivery-layer/neighbor-discovery/Handshaker.js.map +0 -1
  98. package/dist/src/content-delivery-layer/neighbor-discovery/NeighborFinder.d.ts +0 -22
  99. package/dist/src/content-delivery-layer/neighbor-discovery/NeighborFinder.js +0 -64
  100. package/dist/src/content-delivery-layer/neighbor-discovery/NeighborFinder.js.map +0 -1
  101. package/dist/src/content-delivery-layer/neighbor-discovery/NeighborUpdateManager.d.ts +0 -27
  102. package/dist/src/content-delivery-layer/neighbor-discovery/NeighborUpdateManager.js +0 -47
  103. package/dist/src/content-delivery-layer/neighbor-discovery/NeighborUpdateManager.js.map +0 -1
  104. package/dist/src/content-delivery-layer/neighbor-discovery/NeighborUpdateRpcLocal.d.ts +0 -25
  105. package/dist/src/content-delivery-layer/neighbor-discovery/NeighborUpdateRpcLocal.js +0 -52
  106. package/dist/src/content-delivery-layer/neighbor-discovery/NeighborUpdateRpcLocal.js.map +0 -1
  107. package/dist/src/content-delivery-layer/neighbor-discovery/NeighborUpdateRpcRemote.d.ts +0 -11
  108. package/dist/src/content-delivery-layer/neighbor-discovery/NeighborUpdateRpcRemote.js +0 -31
  109. package/dist/src/content-delivery-layer/neighbor-discovery/NeighborUpdateRpcRemote.js.map +0 -1
  110. package/dist/src/content-delivery-layer/plumtree/PausedNeighbors.d.ts +0 -12
  111. package/dist/src/content-delivery-layer/plumtree/PausedNeighbors.js +0 -50
  112. package/dist/src/content-delivery-layer/plumtree/PausedNeighbors.js.map +0 -1
  113. package/dist/src/content-delivery-layer/plumtree/PlumtreeManager.d.ts +0 -37
  114. package/dist/src/content-delivery-layer/plumtree/PlumtreeManager.js +0 -141
  115. package/dist/src/content-delivery-layer/plumtree/PlumtreeManager.js.map +0 -1
  116. package/dist/src/content-delivery-layer/plumtree/PlumtreeRpcLocal.d.ts +0 -20
  117. package/dist/src/content-delivery-layer/plumtree/PlumtreeRpcLocal.js +0 -37
  118. package/dist/src/content-delivery-layer/plumtree/PlumtreeRpcLocal.js.map +0 -1
  119. package/dist/src/content-delivery-layer/plumtree/PlumtreeRpcRemote.d.ts +0 -8
  120. package/dist/src/content-delivery-layer/plumtree/PlumtreeRpcRemote.js +0 -26
  121. package/dist/src/content-delivery-layer/plumtree/PlumtreeRpcRemote.js.map +0 -1
  122. package/dist/src/content-delivery-layer/propagation/FifoMapWithTTL.d.ts +0 -29
  123. package/dist/src/content-delivery-layer/propagation/FifoMapWithTTL.js +0 -93
  124. package/dist/src/content-delivery-layer/propagation/FifoMapWithTTL.js.map +0 -1
  125. package/dist/src/content-delivery-layer/propagation/Propagation.d.ts +0 -35
  126. package/dist/src/content-delivery-layer/propagation/Propagation.js +0 -68
  127. package/dist/src/content-delivery-layer/propagation/Propagation.js.map +0 -1
  128. package/dist/src/content-delivery-layer/propagation/PropagationTaskStore.d.ts +0 -22
  129. package/dist/src/content-delivery-layer/propagation/PropagationTaskStore.js +0 -33
  130. package/dist/src/content-delivery-layer/propagation/PropagationTaskStore.js.map +0 -1
  131. package/dist/src/content-delivery-layer/proxy/ProxyClient.d.ts +0 -46
  132. package/dist/src/content-delivery-layer/proxy/ProxyClient.js +0 -214
  133. package/dist/src/content-delivery-layer/proxy/ProxyClient.js.map +0 -1
  134. package/dist/src/content-delivery-layer/proxy/ProxyConnectionRpcLocal.d.ts +0 -34
  135. package/dist/src/content-delivery-layer/proxy/ProxyConnectionRpcLocal.js +0 -72
  136. package/dist/src/content-delivery-layer/proxy/ProxyConnectionRpcLocal.js.map +0 -1
  137. package/dist/src/content-delivery-layer/proxy/ProxyConnectionRpcRemote.d.ts +0 -7
  138. package/dist/src/content-delivery-layer/proxy/ProxyConnectionRpcRemote.js +0 -27
  139. package/dist/src/content-delivery-layer/proxy/ProxyConnectionRpcRemote.js.map +0 -1
  140. package/dist/src/content-delivery-layer/temporary-connection/TemporaryConnectionRpcLocal.d.ts +0 -26
  141. package/dist/src/content-delivery-layer/temporary-connection/TemporaryConnectionRpcLocal.js +0 -45
  142. package/dist/src/content-delivery-layer/temporary-connection/TemporaryConnectionRpcLocal.js.map +0 -1
  143. package/dist/src/content-delivery-layer/temporary-connection/TemporaryConnectionRpcRemote.d.ts +0 -6
  144. package/dist/src/content-delivery-layer/temporary-connection/TemporaryConnectionRpcRemote.js +0 -31
  145. package/dist/src/content-delivery-layer/temporary-connection/TemporaryConnectionRpcRemote.js.map +0 -1
  146. package/dist/src/control-layer/ControlLayerNode.d.ts +0 -16
  147. package/dist/src/control-layer/ControlLayerNode.js +0 -3
  148. package/dist/src/control-layer/ControlLayerNode.js.map +0 -1
  149. package/dist/src/control-layer/ExternalNetworkRpc.d.ts +0 -16
  150. package/dist/src/control-layer/ExternalNetworkRpc.js +0 -23
  151. package/dist/src/control-layer/ExternalNetworkRpc.js.map +0 -1
  152. package/dist/src/control-layer/PeerDescriptorStoreManager.d.ts +0 -28
  153. package/dist/src/control-layer/PeerDescriptorStoreManager.js +0 -78
  154. package/dist/src/control-layer/PeerDescriptorStoreManager.js.map +0 -1
  155. package/dist/src/discovery-layer/DiscoveryLayerNode.d.ts +0 -28
  156. package/dist/src/discovery-layer/DiscoveryLayerNode.js +0 -3
  157. package/dist/src/discovery-layer/DiscoveryLayerNode.js.map +0 -1
  158. package/dist/src/exports.d.ts +0 -6
  159. package/dist/src/exports.js +0 -24
  160. package/dist/src/exports.js.map +0 -1
  161. package/dist/src/types.d.ts +0 -6
  162. package/dist/src/types.js +0 -3
  163. package/dist/src/types.js.map +0 -1
  164. package/dist/src/utils.d.ts +0 -3
  165. package/dist/src/utils.js +0 -17
  166. package/dist/src/utils.js.map +0 -1
  167. package/dist/test/benchmark/first-message.d.ts +0 -1
  168. package/dist/test/benchmark/first-message.js +0 -139
  169. package/dist/test/benchmark/first-message.js.map +0 -1
  170. package/dist/test/utils/utils.d.ts +0 -15
  171. package/dist/test/utils/utils.js +0 -106
  172. package/dist/test/utils/utils.js.map +0 -1
@@ -1,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HandshakeRpcRemote = exports.INTERLEAVE_REQUEST_TIMEOUT = void 0;
4
- const dht_1 = require("@streamr/dht");
5
- const utils_1 = require("@streamr/utils");
6
- const uuid_1 = require("uuid");
7
- const logger = new utils_1.Logger(module);
8
- exports.INTERLEAVE_REQUEST_TIMEOUT = 10000;
9
- class HandshakeRpcRemote extends dht_1.RpcRemote {
10
- async handshake(streamPartId, neighborNodeIds, concurrentHandshakeNodeId, interleaveNodeId) {
11
- const request = {
12
- streamPartId,
13
- requestId: (0, uuid_1.v4)(),
14
- neighborNodeIds: neighborNodeIds.map((id) => (0, dht_1.toDhtAddressRaw)(id)),
15
- concurrentHandshakeNodeId: (concurrentHandshakeNodeId !== undefined) ? (0, dht_1.toDhtAddressRaw)(concurrentHandshakeNodeId) : undefined,
16
- interleaveNodeId: (interleaveNodeId !== undefined) ? (0, dht_1.toDhtAddressRaw)(interleaveNodeId) : undefined
17
- };
18
- try {
19
- const response = await this.getClient().handshake(request, this.formDhtRpcOptions());
20
- return {
21
- accepted: response.accepted,
22
- interleaveTargetDescriptor: response.interleaveTargetDescriptor
23
- };
24
- }
25
- catch (err) {
26
- logger.debug(`handshake to ${(0, dht_1.toNodeId)(this.getPeerDescriptor())} failed`, { err });
27
- return {
28
- accepted: false
29
- };
30
- }
31
- }
32
- async interleaveRequest(originatorDescriptor) {
33
- const request = {
34
- interleaveTargetDescriptor: originatorDescriptor
35
- };
36
- const options = this.formDhtRpcOptions({
37
- connect: false,
38
- timeout: exports.INTERLEAVE_REQUEST_TIMEOUT
39
- });
40
- try {
41
- const res = await this.getClient().interleaveRequest(request, options);
42
- return {
43
- accepted: res.accepted
44
- };
45
- }
46
- catch (err) {
47
- logger.debug(`interleaveRequest to ${(0, dht_1.toNodeId)(this.getPeerDescriptor())} failed`, { err });
48
- return {
49
- accepted: false
50
- };
51
- }
52
- }
53
- }
54
- exports.HandshakeRpcRemote = HandshakeRpcRemote;
55
- //# sourceMappingURL=HandshakeRpcRemote.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HandshakeRpcRemote.js","sourceRoot":"","sources":["../../../../src/content-delivery-layer/neighbor-discovery/HandshakeRpcRemote.ts"],"names":[],"mappings":";;;AAAA,sCAA+F;AAC/F,0CAAqD;AACrD,+BAAyB;AAIzB,MAAM,MAAM,GAAG,IAAI,cAAM,CAAC,MAAM,CAAC,CAAA;AAOpB,QAAA,0BAA0B,GAAG,KAAK,CAAA;AAE/C,MAAa,kBAAmB,SAAQ,eAA6B;IAEjE,KAAK,CAAC,SAAS,CACX,YAA0B,EAC1B,eAA6B,EAC7B,yBAAsC,EACtC,gBAA6B;QAE7B,MAAM,OAAO,GAA+B;YACxC,YAAY;YACZ,SAAS,EAAE,IAAA,SAAE,GAAE;YACf,eAAe,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAA,qBAAe,EAAC,EAAE,CAAC,CAAC;YACjE,yBAAyB,EAAE,CAAC,yBAAyB,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAA,qBAAe,EAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,SAAS;YAC7H,gBAAgB,EAAE,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAA,qBAAe,EAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS;SACrG,CAAA;QACD,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAA;YACpF,OAAO;gBACH,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,0BAA0B,EAAE,QAAQ,CAAC,0BAA0B;aAClE,CAAA;QACL,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,gBAAgB,IAAA,cAAQ,EAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;YAClF,OAAO;gBACH,QAAQ,EAAE,KAAK;aAClB,CAAA;QACL,CAAC;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,oBAAoC;QACxD,MAAM,OAAO,GAAsB;YAC/B,0BAA0B,EAAE,oBAAoB;SACnD,CAAA;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACnC,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,kCAA0B;SACtC,CAAC,CAAA;QACF,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YACtE,OAAO;gBACH,QAAQ,EAAE,GAAG,CAAC,QAAQ;aACzB,CAAA;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,CAAC,KAAK,CAAC,wBAAwB,IAAA,cAAQ,EAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;YAC1F,OAAO;gBACH,QAAQ,EAAE,KAAK;aAClB,CAAA;QACL,CAAC;IAEL,CAAC;CACJ;AAlDD,gDAkDC"}
@@ -1,32 +0,0 @@
1
- import { DhtAddress, ListeningRpcCommunicator, PeerDescriptor } from '@streamr/dht';
2
- import { StreamPartID } from '@streamr/utils';
3
- import { NodeList } from '../NodeList';
4
- interface HandshakerOptions {
5
- localPeerDescriptor: PeerDescriptor;
6
- streamPartId: StreamPartID;
7
- neighbors: NodeList;
8
- leftNodeView: NodeList;
9
- rightNodeView: NodeList;
10
- nearbyNodeView: NodeList;
11
- randomNodeView: NodeList;
12
- rpcCommunicator: ListeningRpcCommunicator;
13
- maxNeighborCount: number;
14
- ongoingHandshakes: Set<DhtAddress>;
15
- rpcRequestTimeout?: number;
16
- }
17
- export declare class Handshaker {
18
- private options;
19
- private readonly rpcLocal;
20
- constructor(options: HandshakerOptions);
21
- attemptHandshakesOnContacts(excludedIds: DhtAddress[]): Promise<DhtAddress[]>;
22
- private selectParallelTargetsAndHandshake;
23
- private selectParallelTargets;
24
- private doParallelHandshakes;
25
- private selectNewTargetAndHandshake;
26
- private handshakeWithTarget;
27
- private handshakeWithInterleaving;
28
- private createRpcRemote;
29
- private createContentDeliveryRpcRemote;
30
- getOngoingHandshakes(): Set<DhtAddress>;
31
- }
32
- export {};
@@ -1,149 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Handshaker = void 0;
4
- const dht_1 = require("@streamr/dht");
5
- const utils_1 = require("@streamr/utils");
6
- const NetworkRpc_1 = require("../../../generated/packages/trackerless-network/protos/NetworkRpc");
7
- const NetworkRpc_client_1 = require("../../../generated/packages/trackerless-network/protos/NetworkRpc.client");
8
- const ContentDeliveryRpcRemote_1 = require("../ContentDeliveryRpcRemote");
9
- const HandshakeRpcLocal_1 = require("./HandshakeRpcLocal");
10
- const HandshakeRpcRemote_1 = require("./HandshakeRpcRemote");
11
- const logger = new utils_1.Logger(module);
12
- const PARALLEL_HANDSHAKE_COUNT = 2;
13
- class Handshaker {
14
- options;
15
- rpcLocal;
16
- constructor(options) {
17
- this.options = options;
18
- this.rpcLocal = new HandshakeRpcLocal_1.HandshakeRpcLocal({
19
- streamPartId: this.options.streamPartId,
20
- neighbors: this.options.neighbors,
21
- ongoingHandshakes: this.options.ongoingHandshakes,
22
- ongoingInterleaves: new Set(),
23
- maxNeighborCount: this.options.maxNeighborCount,
24
- handshakeWithInterleaving: (target, remoteNodeId) => this.handshakeWithInterleaving(target, remoteNodeId),
25
- createRpcRemote: (target) => this.createRpcRemote(target),
26
- createContentDeliveryRpcRemote: (target) => this.createContentDeliveryRpcRemote(target)
27
- });
28
- this.options.rpcCommunicator.registerRpcMethod(NetworkRpc_1.InterleaveRequest, NetworkRpc_1.InterleaveResponse, 'interleaveRequest', (req, context) => this.rpcLocal.interleaveRequest(req, context), { timeout: HandshakeRpcRemote_1.INTERLEAVE_REQUEST_TIMEOUT });
29
- this.options.rpcCommunicator.registerRpcMethod(NetworkRpc_1.StreamPartHandshakeRequest, NetworkRpc_1.StreamPartHandshakeResponse, 'handshake', (req, context) => this.rpcLocal.handshake(req, context));
30
- }
31
- async attemptHandshakesOnContacts(excludedIds) {
32
- // TODO use options option or named constant? or why the value 2?
33
- if (this.options.neighbors.size() + this.options.ongoingHandshakes.size < this.options.maxNeighborCount - 2) {
34
- logger.trace(`Attempting parallel handshakes with ${PARALLEL_HANDSHAKE_COUNT} targets`);
35
- return this.selectParallelTargetsAndHandshake(excludedIds);
36
- }
37
- else if (this.options.neighbors.size() + this.options.ongoingHandshakes.size < this.options.maxNeighborCount) {
38
- logger.trace(`Attempting handshake with new target`);
39
- return this.selectNewTargetAndHandshake(excludedIds);
40
- }
41
- return excludedIds;
42
- }
43
- async selectParallelTargetsAndHandshake(excludedIds) {
44
- const exclude = excludedIds.concat(this.options.neighbors.getIds());
45
- const targets = this.selectParallelTargets(exclude);
46
- targets.forEach((contact) => this.options.ongoingHandshakes.add((0, dht_1.toNodeId)(contact.getPeerDescriptor())));
47
- return this.doParallelHandshakes(targets, exclude);
48
- }
49
- selectParallelTargets(excludedIds) {
50
- const targets = new Map();
51
- const getExcludedIds = () => [...excludedIds, ...Array.from(targets.keys())];
52
- // Step 1: If no neighbors, try to find a WebSocket node first
53
- if (this.options.neighbors.size() === 0) {
54
- const wsNode = this.options.nearbyNodeView.getFirst(getExcludedIds(), true);
55
- if (wsNode) {
56
- const wsNodeId = (0, dht_1.toNodeId)(wsNode.getPeerDescriptor());
57
- targets.set(wsNodeId, wsNode);
58
- }
59
- }
60
- // Step 2: Add left and right contacts from the ring
61
- const left = this.options.leftNodeView.getFirst(getExcludedIds());
62
- const right = this.options.rightNodeView.getFirst(getExcludedIds());
63
- if (left) {
64
- targets.set((0, dht_1.toNodeId)(left.getPeerDescriptor()), left);
65
- }
66
- if (right) {
67
- targets.set((0, dht_1.toNodeId)(right.getPeerDescriptor()), right);
68
- }
69
- // Step 3: Add closest contact based on Kademlia metric if needed
70
- if (targets.size < PARALLEL_HANDSHAKE_COUNT) {
71
- const closest = this.options.nearbyNodeView.getFirst(getExcludedIds());
72
- if (closest) {
73
- targets.set((0, dht_1.toNodeId)(closest.getPeerDescriptor()), closest);
74
- }
75
- }
76
- // Step 4: Fill remaining slots with random contacts
77
- while (targets.size < PARALLEL_HANDSHAKE_COUNT) {
78
- const random = this.options.randomNodeView.getRandom(getExcludedIds());
79
- if (!random) {
80
- break;
81
- }
82
- targets.set((0, dht_1.toNodeId)(random.getPeerDescriptor()), random);
83
- }
84
- return Array.from(targets.values()).map((neighbor) => this.createRpcRemote(neighbor.getPeerDescriptor()));
85
- }
86
- async doParallelHandshakes(targets, excludedIds) {
87
- const results = await Promise.allSettled(Array.from(targets.values()).map(async (target, i) => {
88
- const otherNode = i === 0 ? targets[1] : targets[0];
89
- // TODO better check (currently this condition is always true)
90
- const otherNodeId = otherNode ? (0, dht_1.toNodeId)(otherNode.getPeerDescriptor()) : undefined;
91
- return this.handshakeWithTarget(target, otherNodeId);
92
- }));
93
- results.forEach((res, i) => {
94
- if (res.status !== 'fulfilled' || !res.value) {
95
- excludedIds.push((0, dht_1.toNodeId)(targets[i].getPeerDescriptor()));
96
- }
97
- });
98
- return excludedIds;
99
- }
100
- async selectNewTargetAndHandshake(excludedIds) {
101
- const exclude = excludedIds.concat(this.options.neighbors.getIds());
102
- const target = this.options.leftNodeView.getFirst(exclude)
103
- ?? this.options.rightNodeView.getFirst(exclude)
104
- ?? this.options.nearbyNodeView.getFirst(exclude)
105
- ?? this.options.randomNodeView.getRandom(exclude);
106
- if (target) {
107
- const accepted = await this.handshakeWithTarget(this.createRpcRemote(target.getPeerDescriptor()));
108
- if (!accepted) {
109
- excludedIds.push((0, dht_1.toNodeId)(target.getPeerDescriptor()));
110
- }
111
- }
112
- return excludedIds;
113
- }
114
- async handshakeWithTarget(target, concurrentNodeId) {
115
- const targetNodeId = (0, dht_1.toNodeId)(target.getPeerDescriptor());
116
- this.options.ongoingHandshakes.add(targetNodeId);
117
- const result = await target.handshake(this.options.streamPartId, this.options.neighbors.getIds(), concurrentNodeId);
118
- if (result.accepted) {
119
- this.options.neighbors.add(this.createContentDeliveryRpcRemote(target.getPeerDescriptor()));
120
- }
121
- if (result.interleaveTargetDescriptor) {
122
- await this.handshakeWithInterleaving(result.interleaveTargetDescriptor, targetNodeId);
123
- }
124
- this.options.ongoingHandshakes.delete(targetNodeId);
125
- return result.accepted;
126
- }
127
- async handshakeWithInterleaving(target, remoteNodeId) {
128
- const remote = this.createRpcRemote(target);
129
- const targetNodeId = (0, dht_1.toNodeId)(remote.getPeerDescriptor());
130
- this.options.ongoingHandshakes.add(targetNodeId);
131
- const result = await remote.handshake(this.options.streamPartId, this.options.neighbors.getIds(), undefined, remoteNodeId);
132
- if (result.accepted) {
133
- this.options.neighbors.add(this.createContentDeliveryRpcRemote(remote.getPeerDescriptor()));
134
- }
135
- this.options.ongoingHandshakes.delete(targetNodeId);
136
- return result.accepted;
137
- }
138
- createRpcRemote(targetPeerDescriptor) {
139
- return new HandshakeRpcRemote_1.HandshakeRpcRemote(this.options.localPeerDescriptor, targetPeerDescriptor, this.options.rpcCommunicator, NetworkRpc_client_1.HandshakeRpcClient, this.options.rpcRequestTimeout);
140
- }
141
- createContentDeliveryRpcRemote(targetPeerDescriptor) {
142
- return new ContentDeliveryRpcRemote_1.ContentDeliveryRpcRemote(this.options.localPeerDescriptor, targetPeerDescriptor, this.options.rpcCommunicator, NetworkRpc_client_1.ContentDeliveryRpcClient, this.options.rpcRequestTimeout);
143
- }
144
- getOngoingHandshakes() {
145
- return this.options.ongoingHandshakes;
146
- }
147
- }
148
- exports.Handshaker = Handshaker;
149
- //# sourceMappingURL=Handshaker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Handshaker.js","sourceRoot":"","sources":["../../../../src/content-delivery-layer/neighbor-discovery/Handshaker.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import { NodeList } from '../NodeList';
2
- import { DhtAddress } from '@streamr/dht';
3
- interface FindNeighborsSessionOptions {
4
- neighbors: NodeList;
5
- nearbyNodeView: NodeList;
6
- leftNodeView: NodeList;
7
- rightNodeView: NodeList;
8
- randomNodeView: NodeList;
9
- doFindNeighbors: (excludedNodes: DhtAddress[]) => Promise<DhtAddress[]>;
10
- minCount: number;
11
- }
12
- export declare class NeighborFinder {
13
- private readonly abortController;
14
- private readonly options;
15
- private running;
16
- constructor(options: FindNeighborsSessionOptions);
17
- private findNeighbors;
18
- isRunning(): boolean;
19
- start(excluded?: DhtAddress[]): void;
20
- stop(): void;
21
- }
22
- export {};
@@ -1,64 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NeighborFinder = void 0;
4
- const utils_1 = require("@streamr/utils");
5
- const INITIAL_WAIT = 100;
6
- const INTERVAL = 250;
7
- const logger = new utils_1.Logger(module);
8
- class NeighborFinder {
9
- abortController;
10
- options;
11
- running = false;
12
- constructor(options) {
13
- this.options = options;
14
- this.abortController = new AbortController();
15
- }
16
- async findNeighbors(excluded) {
17
- if (!this.running) {
18
- return;
19
- }
20
- const newExcludes = await this.options.doFindNeighbors(excluded);
21
- const uniqueContactCount = new Set([
22
- ...this.options.nearbyNodeView.getIds(),
23
- ...this.options.leftNodeView.getIds(),
24
- ...this.options.rightNodeView.getIds(),
25
- ...this.options.randomNodeView.getIds()
26
- ]).size;
27
- if (this.options.neighbors.size() < this.options.minCount && newExcludes.length < uniqueContactCount) {
28
- // TODO should we catch possible promise rejection?
29
- (0, utils_1.setAbortableTimeout)(() => this.findNeighbors(newExcludes), INTERVAL, this.abortController.signal);
30
- }
31
- else if (this.options.neighbors.size() === 0 && uniqueContactCount > 0) {
32
- logger.debug('No neighbors found yet contacts are available, restarting handshaking process');
33
- (0, utils_1.setAbortableTimeout)(() => this.findNeighbors([]), INTERVAL, this.abortController.signal);
34
- }
35
- else {
36
- this.running = false;
37
- }
38
- }
39
- isRunning() {
40
- return this.running;
41
- }
42
- start(excluded = []) {
43
- if (this.running) {
44
- return;
45
- }
46
- this.running = true;
47
- // TODO should we catch possible promise rejection?
48
- (0, utils_1.setAbortableTimeout)(async () => {
49
- await Promise.all([
50
- this.findNeighbors(excluded),
51
- this.findNeighbors(excluded)
52
- ]);
53
- }, INITIAL_WAIT, this.abortController.signal);
54
- }
55
- stop() {
56
- if (!this.running) {
57
- return;
58
- }
59
- this.running = false;
60
- this.abortController.abort();
61
- }
62
- }
63
- exports.NeighborFinder = NeighborFinder;
64
- //# sourceMappingURL=NeighborFinder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NeighborFinder.js","sourceRoot":"","sources":["../../../../src/content-delivery-layer/neighbor-discovery/NeighborFinder.ts"],"names":[],"mappings":";;;AAAA,0CAA4D;AAc5D,MAAM,YAAY,GAAG,GAAG,CAAA;AACxB,MAAM,QAAQ,GAAG,GAAG,CAAA;AAEpB,MAAM,MAAM,GAAG,IAAI,cAAM,CAAC,MAAM,CAAC,CAAA;AAEjC,MAAa,cAAc;IACN,eAAe,CAAiB;IAChC,OAAO,CAA6B;IAC7C,OAAO,GAAG,KAAK,CAAA;IAEvB,YAAY,OAAoC;QAC5C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;IAChD,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,QAAsB;QAC9C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,OAAM;QACV,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;QAChE,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;YAC/B,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE;YACvC,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE;YACrC,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE;YACtC,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE;SAC1C,CAAC,CAAC,IAAI,CAAA;QACP,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;YACnG,mDAAmD;YACnD,IAAA,2BAAmB,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;QACrG,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,kBAAkB,GAAG,CAAC,EAAE,CAAC;YACvE,MAAM,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAA;YAC7F,IAAA,2BAAmB,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;QAC5F,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACxB,CAAC;IACL,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,OAAO,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,WAAyB,EAAE;QAC7B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAM;QACV,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,mDAAmD;QACnD,IAAA,2BAAmB,EAAC,KAAK,IAAI,EAAE;YAC3B,MAAM,OAAO,CAAC,GAAG,CAAC;gBACd,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;gBAC5B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;aAC/B,CAAC,CAAA;QACN,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;IACjD,CAAC;IAED,IAAI;QACA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,OAAM;QACV,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;IAChC,CAAC;CACJ;AAzDD,wCAyDC"}
@@ -1,27 +0,0 @@
1
- import { DhtAddress, ListeningRpcCommunicator, PeerDescriptor } from '@streamr/dht';
2
- import { StreamPartID } from '@streamr/utils';
3
- import { NodeList } from '../NodeList';
4
- import { NeighborFinder } from './NeighborFinder';
5
- interface NeighborUpdateManagerOptions {
6
- localPeerDescriptor: PeerDescriptor;
7
- neighbors: NodeList;
8
- nearbyNodeView: NodeList;
9
- neighborFinder: NeighborFinder;
10
- streamPartId: StreamPartID;
11
- rpcCommunicator: ListeningRpcCommunicator;
12
- neighborUpdateInterval: number;
13
- neighborTargetCount: number;
14
- ongoingHandshakes: Set<DhtAddress>;
15
- }
16
- export declare const DEFAULT_NEIGHBOR_UPDATE_INTERVAL: number;
17
- export declare class NeighborUpdateManager {
18
- private readonly abortController;
19
- private readonly options;
20
- private readonly rpcLocal;
21
- constructor(options: NeighborUpdateManagerOptions);
22
- start(): Promise<void>;
23
- stop(): void;
24
- private updateNeighborInfo;
25
- private createRemote;
26
- }
27
- export {};
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NeighborUpdateManager = exports.DEFAULT_NEIGHBOR_UPDATE_INTERVAL = void 0;
4
- const dht_1 = require("@streamr/dht");
5
- const utils_1 = require("@streamr/utils");
6
- const NetworkRpc_1 = require("../../../generated/packages/trackerless-network/protos/NetworkRpc");
7
- const NetworkRpc_client_1 = require("../../../generated/packages/trackerless-network/protos/NetworkRpc.client");
8
- const NeighborUpdateRpcLocal_1 = require("./NeighborUpdateRpcLocal");
9
- const NeighborUpdateRpcRemote_1 = require("./NeighborUpdateRpcRemote");
10
- const logger = new utils_1.Logger(module);
11
- exports.DEFAULT_NEIGHBOR_UPDATE_INTERVAL = 10 * 1000;
12
- class NeighborUpdateManager {
13
- abortController;
14
- options;
15
- rpcLocal;
16
- constructor(options) {
17
- this.abortController = new AbortController();
18
- this.rpcLocal = new NeighborUpdateRpcLocal_1.NeighborUpdateRpcLocal(options);
19
- this.options = options;
20
- this.options.rpcCommunicator.registerRpcMethod(NetworkRpc_1.NeighborUpdate, NetworkRpc_1.NeighborUpdate, 'neighborUpdate', (req, context) => this.rpcLocal.neighborUpdate(req, context));
21
- }
22
- async start() {
23
- await (0, utils_1.scheduleAtInterval)(() => this.updateNeighborInfo(), this.options.neighborUpdateInterval, false, this.abortController.signal);
24
- }
25
- stop() {
26
- this.abortController.abort();
27
- }
28
- async updateNeighborInfo() {
29
- logger.trace(`Updating neighbor info to nodes`);
30
- const neighborDescriptors = this.options.neighbors.getAll().map((neighbor) => neighbor.getPeerDescriptor());
31
- const startTime = Date.now();
32
- await Promise.allSettled(this.options.neighbors.getAll().map(async (neighbor) => {
33
- const res = await this.createRemote(neighbor.getPeerDescriptor()).updateNeighbors(this.options.streamPartId, neighborDescriptors);
34
- const nodeId = (0, dht_1.toNodeId)(neighbor.getPeerDescriptor());
35
- this.options.neighbors.get(nodeId).setRtt(Date.now() - startTime);
36
- if (res.removeMe) {
37
- this.options.neighbors.remove(nodeId);
38
- this.options.neighborFinder.start([nodeId]);
39
- }
40
- }));
41
- }
42
- createRemote(targetPeerDescriptor) {
43
- return new NeighborUpdateRpcRemote_1.NeighborUpdateRpcRemote(this.options.localPeerDescriptor, targetPeerDescriptor, this.options.rpcCommunicator, NetworkRpc_client_1.NeighborUpdateRpcClient);
44
- }
45
- }
46
- exports.NeighborUpdateManager = NeighborUpdateManager;
47
- //# sourceMappingURL=NeighborUpdateManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NeighborUpdateManager.js","sourceRoot":"","sources":["../../../../src/content-delivery-layer/neighbor-discovery/NeighborUpdateManager.ts"],"names":[],"mappings":";;;AAAA,sCAA6F;AAC7F,0CAAyE;AACzE,kGAAkG;AAClG,gHAAkH;AAGlH,qEAAiE;AACjE,uEAAmE;AAcnE,MAAM,MAAM,GAAG,IAAI,cAAM,CAAC,MAAM,CAAC,CAAA;AAEpB,QAAA,gCAAgC,GAAG,EAAE,GAAG,IAAI,CAAA;AAEzD,MAAa,qBAAqB;IAEb,eAAe,CAAiB;IAChC,OAAO,CAA8B;IACrC,QAAQ,CAAwB;IAEjD,YAAY,OAAqC;QAC7C,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;QAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,+CAAsB,CAAC,OAAO,CAAC,CAAA;QACnD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,iBAAiB,CAAC,2BAAc,EAAE,2BAAc,EAAE,gBAAgB,EAC3F,CAAC,GAAmB,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;IACrF,CAAC;IAED,KAAK,CAAC,KAAK;QACP,MAAM,IAAA,0BAAkB,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;IACtI,CAAC;IAED,IAAI;QACA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;IAChC,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC5B,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;QAC/C,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAA;QAC3G,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC5B,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YAC5E,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAA;YACjI,MAAM,MAAM,GAAG,IAAA,cAAQ,EAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAA;YACrD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAA;YAClE,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACf,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;gBACrC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;YAC/C,CAAC;QACL,CAAC,CAAC,CAAC,CAAA;IACP,CAAC;IAEO,YAAY,CAAC,oBAAoC;QACrD,OAAO,IAAI,iDAAuB,CAC9B,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAChC,oBAAoB,EACpB,IAAI,CAAC,OAAO,CAAC,eAAe,EAC5B,2CAAuB,CAC1B,CAAA;IACL,CAAC;CACJ;AA7CD,sDA6CC"}
@@ -1,25 +0,0 @@
1
- import { ServerCallContext } from '@protobuf-ts/runtime-rpc';
2
- import { DhtAddress, ListeningRpcCommunicator, PeerDescriptor } from '@streamr/dht';
3
- import { StreamPartID } from '@streamr/utils';
4
- import { NeighborUpdate } from '../../../generated/packages/trackerless-network/protos/NetworkRpc';
5
- import { INeighborUpdateRpc } from '../../../generated/packages/trackerless-network/protos/NetworkRpc.server';
6
- import { NodeList } from '../NodeList';
7
- import { NeighborFinder } from './NeighborFinder';
8
- interface NeighborUpdateRpcLocalOptions {
9
- localPeerDescriptor: PeerDescriptor;
10
- streamPartId: StreamPartID;
11
- neighbors: NodeList;
12
- nearbyNodeView: NodeList;
13
- neighborFinder: NeighborFinder;
14
- rpcCommunicator: ListeningRpcCommunicator;
15
- neighborTargetCount: number;
16
- ongoingHandshakes: Set<DhtAddress>;
17
- }
18
- export declare class NeighborUpdateRpcLocal implements INeighborUpdateRpc {
19
- private readonly options;
20
- constructor(options: NeighborUpdateRpcLocalOptions);
21
- private updateContacts;
22
- private createResponse;
23
- neighborUpdate(message: NeighborUpdate, context: ServerCallContext): Promise<NeighborUpdate>;
24
- }
25
- export {};
@@ -1,52 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NeighborUpdateRpcLocal = void 0;
4
- const dht_1 = require("@streamr/dht");
5
- const NetworkRpc_client_1 = require("../../../generated/packages/trackerless-network/protos/NetworkRpc.client");
6
- const ContentDeliveryRpcRemote_1 = require("../ContentDeliveryRpcRemote");
7
- class NeighborUpdateRpcLocal {
8
- options;
9
- constructor(options) {
10
- this.options = options;
11
- }
12
- updateContacts(neighborDescriptors) {
13
- const ownNodeId = (0, dht_1.toNodeId)(this.options.localPeerDescriptor);
14
- const newPeerDescriptors = neighborDescriptors.filter((peerDescriptor) => {
15
- const nodeId = (0, dht_1.toNodeId)(peerDescriptor);
16
- return nodeId !== ownNodeId && !this.options.neighbors.getIds().includes(nodeId);
17
- });
18
- newPeerDescriptors.forEach((peerDescriptor) => this.options.nearbyNodeView.add(new ContentDeliveryRpcRemote_1.ContentDeliveryRpcRemote(this.options.localPeerDescriptor, peerDescriptor, this.options.rpcCommunicator, NetworkRpc_client_1.ContentDeliveryRpcClient)));
19
- }
20
- createResponse(removeMe) {
21
- return {
22
- streamPartId: this.options.streamPartId,
23
- neighborDescriptors: this.options.neighbors.getAll().map((neighbor) => neighbor.getPeerDescriptor()),
24
- removeMe
25
- };
26
- }
27
- // INeighborUpdateRpc server method
28
- async neighborUpdate(message, context) {
29
- const senderPeerDescriptor = context.incomingSourceDescriptor;
30
- const remoteNodeId = (0, dht_1.toNodeId)(senderPeerDescriptor);
31
- this.updateContacts(message.neighborDescriptors);
32
- if (!this.options.neighbors.has(remoteNodeId) && !this.options.ongoingHandshakes.has(remoteNodeId)) {
33
- return this.createResponse(true);
34
- }
35
- else {
36
- const isOverNeighborCount = this.options.neighbors.size() > this.options.neighborTargetCount
37
- // Motivation: We don't know the remote's neighborTargetCount setting here. We only ask to cut connections
38
- // if the remote has a "sufficient" number of neighbors, where "sufficient" means our neighborTargetCount
39
- // setting.
40
- && message.neighborDescriptors.length > this.options.neighborTargetCount;
41
- if (!isOverNeighborCount) {
42
- this.options.neighborFinder.start();
43
- }
44
- else {
45
- this.options.neighbors.remove(remoteNodeId);
46
- }
47
- return this.createResponse(isOverNeighborCount);
48
- }
49
- }
50
- }
51
- exports.NeighborUpdateRpcLocal = NeighborUpdateRpcLocal;
52
- //# sourceMappingURL=NeighborUpdateRpcLocal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NeighborUpdateRpcLocal.js","sourceRoot":"","sources":["../../../../src/content-delivery-layer/neighbor-discovery/NeighborUpdateRpcLocal.ts"],"names":[],"mappings":";;;AACA,sCAA6G;AAG7G,gHAAmH;AAEnH,0EAAsE;AAetE,MAAa,sBAAsB;IAEd,OAAO,CAA+B;IAEvD,YAAY,OAAsC;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,CAAC;IAEO,cAAc,CAAC,mBAAqC;QACxD,MAAM,SAAS,GAAG,IAAA,cAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;QAC5D,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,EAAE;YACrE,MAAM,MAAM,GAAG,IAAA,cAAQ,EAAC,cAAc,CAAC,CAAA;YACvC,OAAO,MAAM,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACpF,CAAC,CAAC,CAAA;QACF,kBAAkB,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAC1E,IAAI,mDAAwB,CACxB,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAChC,cAAc,EACd,IAAI,CAAC,OAAO,CAAC,eAAe,EAC5B,4CAAwB,CAC3B,CAAC,CACL,CAAA;IACL,CAAC;IAEO,cAAc,CAAC,QAAiB;QACpC,OAAO;YACH,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;YACvC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;YACpG,QAAQ;SACX,CAAA;IACL,CAAC;IAED,mCAAmC;IACnC,KAAK,CAAC,cAAc,CAAC,OAAuB,EAAE,OAA0B;QACpE,MAAM,oBAAoB,GAAI,OAA0B,CAAC,wBAAyB,CAAA;QAClF,MAAM,YAAY,GAAG,IAAA,cAAQ,EAAC,oBAAoB,CAAC,CAAA;QACnD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;QAChD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACjG,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QACpC,CAAC;aAAM,CAAC;YACJ,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB;gBACxF,0GAA0G;gBAC1G,yGAAyG;gBACzG,WAAW;mBACR,OAAO,CAAC,mBAAmB,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAA;YAC5E,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACvB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;YACvC,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;YAC/C,CAAC;YACD,OAAO,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAA;QACnD,CAAC;IACL,CAAC;CACJ;AArDD,wDAqDC"}
@@ -1,11 +0,0 @@
1
- import { PeerDescriptor, RpcRemote } from '@streamr/dht';
2
- import { StreamPartID } from '@streamr/utils';
3
- import { NeighborUpdateRpcClient } from '../../../generated/packages/trackerless-network/protos/NetworkRpc.client';
4
- interface UpdateNeighborsResponse {
5
- peerDescriptors: PeerDescriptor[];
6
- removeMe: boolean;
7
- }
8
- export declare class NeighborUpdateRpcRemote extends RpcRemote<NeighborUpdateRpcClient> {
9
- updateNeighbors(streamPartId: StreamPartID, neighbors: PeerDescriptor[]): Promise<UpdateNeighborsResponse>;
10
- }
11
- export {};
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NeighborUpdateRpcRemote = void 0;
4
- const dht_1 = require("@streamr/dht");
5
- const utils_1 = require("@streamr/utils");
6
- const logger = new utils_1.Logger(module);
7
- class NeighborUpdateRpcRemote extends dht_1.RpcRemote {
8
- async updateNeighbors(streamPartId, neighbors) {
9
- const request = {
10
- streamPartId,
11
- neighborDescriptors: neighbors,
12
- removeMe: false
13
- };
14
- try {
15
- const response = await this.getClient().neighborUpdate(request, this.formDhtRpcOptions());
16
- return {
17
- peerDescriptors: response.neighborDescriptors,
18
- removeMe: response.removeMe
19
- };
20
- }
21
- catch (err) {
22
- logger.debug(`updateNeighbors to ${(0, dht_1.toNodeId)(this.getPeerDescriptor())} failed`, { err });
23
- return {
24
- peerDescriptors: [],
25
- removeMe: true
26
- };
27
- }
28
- }
29
- }
30
- exports.NeighborUpdateRpcRemote = NeighborUpdateRpcRemote;
31
- //# sourceMappingURL=NeighborUpdateRpcRemote.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NeighborUpdateRpcRemote.js","sourceRoot":"","sources":["../../../../src/content-delivery-layer/neighbor-discovery/NeighborUpdateRpcRemote.ts"],"names":[],"mappings":";;;AAAA,sCAAkE;AAClE,0CAAqD;AAIrD,MAAM,MAAM,GAAG,IAAI,cAAM,CAAC,MAAM,CAAC,CAAA;AAOjC,MAAa,uBAAwB,SAAQ,eAAkC;IAE3E,KAAK,CAAC,eAAe,CAAC,YAA0B,EAAE,SAA2B;QACzE,MAAM,OAAO,GAAmB;YAC5B,YAAY;YACZ,mBAAmB,EAAE,SAAS;YAC9B,QAAQ,EAAE,KAAK;SAClB,CAAA;QACD,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAA;YACzF,OAAO;gBACH,eAAe,EAAE,QAAQ,CAAC,mBAAmB;gBAC7C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;aAC9B,CAAA;QACL,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,sBAAsB,IAAA,cAAQ,EAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;YACxF,OAAO;gBACH,eAAe,EAAE,EAAE;gBACnB,QAAQ,EAAE,IAAI;aACjB,CAAA;QACL,CAAC;IACL,CAAC;CACJ;AAtBD,0DAsBC"}
@@ -1,12 +0,0 @@
1
- import { DhtAddress } from '@streamr/dht';
2
- export declare class PausedNeighbors {
3
- private readonly pausedNeighbors;
4
- private readonly limit;
5
- constructor(limit: number);
6
- add(node: DhtAddress, msgChainId: string): void;
7
- delete(node: DhtAddress, msgChainId: string): void;
8
- deleteAll(node: DhtAddress): void;
9
- isPaused(node: DhtAddress, msgChainId: string): boolean;
10
- forEach(fn: (neighbors: Set<DhtAddress>, msgChainId: string) => void): void;
11
- size(msgChainId: string): number;
12
- }
@@ -1,50 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PausedNeighbors = void 0;
4
- class PausedNeighbors {
5
- pausedNeighbors;
6
- limit;
7
- constructor(limit) {
8
- this.pausedNeighbors = new Map();
9
- this.limit = limit;
10
- }
11
- add(node, msgChainId) {
12
- if (!this.pausedNeighbors.has(msgChainId)) {
13
- this.pausedNeighbors.set(msgChainId, new Set());
14
- }
15
- if (this.pausedNeighbors.get(msgChainId).size >= this.limit) {
16
- return;
17
- }
18
- this.pausedNeighbors.get(msgChainId).add(node);
19
- }
20
- delete(node, msgChainId) {
21
- this.pausedNeighbors.get(msgChainId)?.delete(node);
22
- if (this.pausedNeighbors.get(msgChainId)?.size === 0) {
23
- this.pausedNeighbors.delete(msgChainId);
24
- }
25
- }
26
- deleteAll(node) {
27
- this.pausedNeighbors.forEach((neighbors, msgChainId) => {
28
- neighbors.delete(node);
29
- if (neighbors.size === 0) {
30
- this.pausedNeighbors.delete(msgChainId);
31
- }
32
- });
33
- }
34
- isPaused(node, msgChainId) {
35
- if (!this.pausedNeighbors.has(msgChainId)) {
36
- return false;
37
- }
38
- return this.pausedNeighbors.get(msgChainId).has(node);
39
- }
40
- forEach(fn) {
41
- this.pausedNeighbors.forEach((neighbors, msgChainId) => {
42
- fn(neighbors, msgChainId);
43
- });
44
- }
45
- size(msgChainId) {
46
- return this.pausedNeighbors.get(msgChainId)?.size ?? 0;
47
- }
48
- }
49
- exports.PausedNeighbors = PausedNeighbors;
50
- //# sourceMappingURL=PausedNeighbors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PausedNeighbors.js","sourceRoot":"","sources":["../../../../src/content-delivery-layer/plumtree/PausedNeighbors.ts"],"names":[],"mappings":";;;AACA,MAAa,eAAe;IACP,eAAe,CAA8B;IAC7C,KAAK,CAAQ;IAE9B,YAAY,KAAa;QACrB,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAA;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACtB,CAAC;IAED,GAAG,CAAC,IAAgB,EAAE,UAAkB;QACpC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;QACnD,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3D,OAAM;QACV,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACnD,CAAC;IAED,MAAM,CAAC,IAAgB,EAAE,UAAkB;QACvC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QAClD,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAC3C,CAAC;IACL,CAAC;IAED,SAAS,CAAC,IAAgB;QACtB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE;YACnD,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACtB,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YAC3C,CAAC;QACL,CAAC,CAAC,CAAA;IACN,CAAC;IAED,QAAQ,CAAC,IAAgB,EAAE,UAAkB;QACzC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,OAAO,KAAK,CAAA;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC1D,CAAC;IAED,OAAO,CAAC,EAA4D;QAChE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE;YACnD,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;QAC7B,CAAC,CAAC,CAAA;IACN,CAAC;IAED,IAAI,CAAC,UAAkB;QACnB,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,IAAI,CAAC,CAAA;IAC1D,CAAC;CAEJ;AApDD,0CAoDC"}