@libp2p/memory 1.1.14-6059227cb → 1.1.14-87bc8d4fb
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/index.min.js +1 -1
- package/dist/index.min.js.map +4 -4
- package/dist/src/connections.d.ts +46 -4
- package/dist/src/connections.d.ts.map +1 -1
- package/dist/src/connections.js +117 -43
- package/dist/src/connections.js.map +1 -1
- package/dist/src/index.d.ts +0 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/listener.d.ts.map +1 -1
- package/dist/src/listener.js +1 -2
- package/dist/src/listener.js.map +1 -1
- package/dist/src/memory.d.ts.map +1 -1
- package/dist/src/memory.js +2 -4
- package/dist/src/memory.js.map +1 -1
- package/package.json +10 -11
- package/src/connections.ts +126 -51
- package/src/index.ts +0 -7
- package/src/listener.ts +1 -2
- package/src/memory.ts +2 -4
- package/dist/src/constants.d.ts +0 -2
- package/dist/src/constants.d.ts.map +0 -1
- package/dist/src/constants.js +0 -2
- package/dist/src/constants.js.map +0 -1
- package/dist/src/pushable-to-conn.d.ts +0 -17
- package/dist/src/pushable-to-conn.d.ts.map +0 -1
- package/dist/src/pushable-to-conn.js +0 -51
- package/dist/src/pushable-to-conn.js.map +0 -1
- package/src/constants.ts +0 -1
- package/src/pushable-to-conn.ts +0 -78
|
@@ -1,5 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
*
|
|
4
|
+
* A [libp2p transport](https://docs.libp2p.io/concepts/transports/overview/)
|
|
5
|
+
* that operates in-memory only.
|
|
6
|
+
*
|
|
7
|
+
* This is intended for testing and can only be used to connect two libp2p nodes
|
|
8
|
+
* that are running in the same process.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
*
|
|
12
|
+
* ```TypeScript
|
|
13
|
+
* import { createLibp2p } from 'libp2p'
|
|
14
|
+
* import { memory } from '@libp2p/memory'
|
|
15
|
+
* import { multiaddr } from '@multiformats/multiaddr'
|
|
16
|
+
*
|
|
17
|
+
* const listener = await createLibp2p({
|
|
18
|
+
* addresses: {
|
|
19
|
+
* listen: [
|
|
20
|
+
* '/memory/node-a'
|
|
21
|
+
* ]
|
|
22
|
+
* },
|
|
23
|
+
* transports: [
|
|
24
|
+
* memory()
|
|
25
|
+
* ]
|
|
26
|
+
* })
|
|
27
|
+
*
|
|
28
|
+
* const dialer = await createLibp2p({
|
|
29
|
+
* transports: [
|
|
30
|
+
* memory()
|
|
31
|
+
* ]
|
|
32
|
+
* })
|
|
33
|
+
*
|
|
34
|
+
* const ma = multiaddr('/memory/node-a')
|
|
35
|
+
*
|
|
36
|
+
* // dial the listener, timing out after 10s
|
|
37
|
+
* const connection = await dialer.dial(ma, {
|
|
38
|
+
* signal: AbortSignal.timeout(10_000)
|
|
39
|
+
* })
|
|
40
|
+
*
|
|
41
|
+
* // use connection...
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
1
44
|
import type { MemoryTransportComponents, MemoryTransportInit } from './index.js';
|
|
2
|
-
import type {
|
|
45
|
+
import type { MultiaddrConnection, PeerId } from '@libp2p/interface';
|
|
3
46
|
export declare const connections: Map<string, MemoryConnection>;
|
|
4
47
|
interface MemoryConnectionHandler {
|
|
5
48
|
(maConn: MultiaddrConnection): void;
|
|
@@ -9,13 +52,12 @@ interface MemoryConnectionInit extends MemoryTransportInit {
|
|
|
9
52
|
address: string;
|
|
10
53
|
}
|
|
11
54
|
export declare class MemoryConnection {
|
|
12
|
-
readonly latency: number;
|
|
13
55
|
private readonly components;
|
|
14
56
|
private readonly init;
|
|
15
57
|
private readonly connections;
|
|
16
|
-
private readonly
|
|
58
|
+
private readonly latency;
|
|
17
59
|
constructor(components: MemoryTransportComponents, init: MemoryConnectionInit);
|
|
18
|
-
dial(dialingPeerId: PeerId,
|
|
60
|
+
dial(dialingPeerId: PeerId, signal: AbortSignal): Promise<MultiaddrConnection>;
|
|
19
61
|
close(): void;
|
|
20
62
|
}
|
|
21
63
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../../src/connections.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../../src/connections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAQH,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAGpE,eAAO,MAAM,WAAW,+BAAsC,CAAA;AAE9D,UAAU,uBAAuB;IAC/B,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAA;CACpC;AAED,UAAU,oBAAqB,SAAQ,mBAAmB;IACxD,YAAY,EAAE,uBAAuB,CAAA;IACrC,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2B;IACtD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;IACtD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;gBAEnB,UAAU,EAAE,yBAAyB,EAAE,IAAI,EAAE,oBAAoB;IAOxE,IAAI,CAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA+FrF,KAAK,IAAK,IAAI;CAKf"}
|
package/dist/src/connections.js
CHANGED
|
@@ -1,68 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
*
|
|
4
|
+
* A [libp2p transport](https://docs.libp2p.io/concepts/transports/overview/)
|
|
5
|
+
* that operates in-memory only.
|
|
6
|
+
*
|
|
7
|
+
* This is intended for testing and can only be used to connect two libp2p nodes
|
|
8
|
+
* that are running in the same process.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
*
|
|
12
|
+
* ```TypeScript
|
|
13
|
+
* import { createLibp2p } from 'libp2p'
|
|
14
|
+
* import { memory } from '@libp2p/memory'
|
|
15
|
+
* import { multiaddr } from '@multiformats/multiaddr'
|
|
16
|
+
*
|
|
17
|
+
* const listener = await createLibp2p({
|
|
18
|
+
* addresses: {
|
|
19
|
+
* listen: [
|
|
20
|
+
* '/memory/node-a'
|
|
21
|
+
* ]
|
|
22
|
+
* },
|
|
23
|
+
* transports: [
|
|
24
|
+
* memory()
|
|
25
|
+
* ]
|
|
26
|
+
* })
|
|
27
|
+
*
|
|
28
|
+
* const dialer = await createLibp2p({
|
|
29
|
+
* transports: [
|
|
30
|
+
* memory()
|
|
31
|
+
* ]
|
|
32
|
+
* })
|
|
33
|
+
*
|
|
34
|
+
* const ma = multiaddr('/memory/node-a')
|
|
35
|
+
*
|
|
36
|
+
* // dial the listener, timing out after 10s
|
|
37
|
+
* const connection = await dialer.dial(ma, {
|
|
38
|
+
* signal: AbortSignal.timeout(10_000)
|
|
39
|
+
* })
|
|
40
|
+
*
|
|
41
|
+
* // use connection...
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
1
44
|
import { ConnectionFailedError } from '@libp2p/interface';
|
|
2
45
|
import { multiaddr } from '@multiformats/multiaddr';
|
|
3
46
|
import delay from 'delay';
|
|
47
|
+
import map from 'it-map';
|
|
4
48
|
import { pushable } from 'it-pushable';
|
|
5
49
|
import { raceSignal } from 'race-signal';
|
|
6
|
-
import { DEFAULT_MAX_MESSAGE_SIZE } from "./constants.js";
|
|
7
|
-
import { pushableToMaConn } from "./pushable-to-conn.js";
|
|
8
50
|
export const connections = new Map();
|
|
9
|
-
let connectionId = 0;
|
|
10
51
|
export class MemoryConnection {
|
|
11
|
-
latency;
|
|
12
52
|
components;
|
|
13
53
|
init;
|
|
14
54
|
connections;
|
|
15
|
-
|
|
55
|
+
latency;
|
|
16
56
|
constructor(components, init) {
|
|
17
57
|
this.components = components;
|
|
18
58
|
this.init = init;
|
|
19
59
|
this.connections = new Set();
|
|
20
60
|
this.latency = init.latency ?? 0;
|
|
21
|
-
this.log = components.logger.forComponent('libp2p:memory');
|
|
22
61
|
}
|
|
23
|
-
async dial(dialingPeerId,
|
|
62
|
+
async dial(dialingPeerId, signal) {
|
|
63
|
+
const dialerPushable = pushable();
|
|
64
|
+
const listenerPushable = pushable();
|
|
24
65
|
const self = this;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
onEnd(err) {
|
|
38
|
-
listenerEnded = true;
|
|
39
|
-
self.connections.delete(listener);
|
|
40
|
-
if (!dialerEnded) {
|
|
41
|
-
dialerPushable.end(err);
|
|
66
|
+
const dialer = {
|
|
67
|
+
source: (async function* () {
|
|
68
|
+
yield* map(listenerPushable, async (buf) => {
|
|
69
|
+
if (self.latency > 0) {
|
|
70
|
+
await delay(self.latency);
|
|
71
|
+
}
|
|
72
|
+
return buf;
|
|
73
|
+
});
|
|
74
|
+
})(),
|
|
75
|
+
sink: async (source) => {
|
|
76
|
+
for await (const buf of source) {
|
|
77
|
+
dialerPushable.push(buf);
|
|
42
78
|
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
79
|
+
},
|
|
80
|
+
close: async () => {
|
|
81
|
+
dialerPushable.end();
|
|
82
|
+
this.connections.delete(dialer);
|
|
83
|
+
dialer.timeline.close = Date.now();
|
|
84
|
+
listenerPushable.end();
|
|
85
|
+
this.connections.delete(listener);
|
|
86
|
+
listener.timeline.close = Date.now();
|
|
87
|
+
},
|
|
88
|
+
abort: (err) => {
|
|
89
|
+
dialerPushable.end(err);
|
|
90
|
+
this.connections.delete(dialer);
|
|
91
|
+
dialer.timeline.close = Date.now();
|
|
92
|
+
listenerPushable.end(err);
|
|
93
|
+
this.connections.delete(listener);
|
|
94
|
+
listener.timeline.close = Date.now();
|
|
95
|
+
},
|
|
96
|
+
timeline: {
|
|
97
|
+
open: Date.now()
|
|
98
|
+
},
|
|
47
99
|
remoteAddr: multiaddr(`${this.init.address}/p2p/${this.components.peerId}`),
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
100
|
+
log: this.components.logger.forComponent('libp2p:memory')
|
|
101
|
+
};
|
|
102
|
+
const listener = {
|
|
103
|
+
source: (async function* () {
|
|
104
|
+
yield* map(dialerPushable, async (buf) => {
|
|
105
|
+
if (self.latency > 0) {
|
|
106
|
+
await delay(self.latency);
|
|
107
|
+
}
|
|
108
|
+
return buf;
|
|
109
|
+
});
|
|
110
|
+
})(),
|
|
111
|
+
sink: async (source) => {
|
|
112
|
+
for await (const buf of source) {
|
|
113
|
+
listenerPushable.push(buf);
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
close: async () => {
|
|
117
|
+
listenerPushable.end();
|
|
118
|
+
this.connections.delete(listener);
|
|
119
|
+
listener.timeline.close = Date.now();
|
|
120
|
+
dialerPushable.end();
|
|
121
|
+
this.connections.delete(dialer);
|
|
122
|
+
dialer.timeline.close = Date.now();
|
|
123
|
+
},
|
|
124
|
+
abort: (err) => {
|
|
125
|
+
listenerPushable.end(err);
|
|
126
|
+
this.connections.delete(listener);
|
|
127
|
+
listener.timeline.close = Date.now();
|
|
128
|
+
dialerPushable.end(err);
|
|
129
|
+
this.connections.delete(dialer);
|
|
130
|
+
dialer.timeline.close = Date.now();
|
|
131
|
+
},
|
|
132
|
+
timeline: {
|
|
133
|
+
open: Date.now()
|
|
134
|
+
},
|
|
56
135
|
remoteAddr: multiaddr(`${this.init.address}-outgoing/p2p/${dialingPeerId}`),
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
remotePushable: dialerPushable,
|
|
60
|
-
log: this.log.newScope(`connection:${connectionId}`),
|
|
61
|
-
maxMessageSize: this.init.maxMessageSize ?? DEFAULT_MAX_MESSAGE_SIZE
|
|
62
|
-
});
|
|
136
|
+
log: this.components.logger.forComponent('libp2p:memory')
|
|
137
|
+
};
|
|
63
138
|
this.connections.add(dialer);
|
|
64
139
|
this.connections.add(listener);
|
|
65
|
-
connectionId++;
|
|
66
140
|
await raceSignal(delay(this.latency), signal);
|
|
67
141
|
this.init.onConnection(listener);
|
|
68
142
|
return dialer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connections.js","sourceRoot":"","sources":["../../src/connections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"connections.js","sourceRoot":"","sources":["../../src/connections.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -54,12 +54,6 @@ export interface MemoryTransportInit {
|
|
|
54
54
|
* @default 0
|
|
55
55
|
*/
|
|
56
56
|
latency?: number;
|
|
57
|
-
/**
|
|
58
|
-
* Data messages larger than this will be chunked before sending
|
|
59
|
-
*
|
|
60
|
-
* @default 65_536
|
|
61
|
-
*/
|
|
62
|
-
maxMessageSize?: number;
|
|
63
57
|
}
|
|
64
58
|
export declare function memory(init?: MemoryTransportInit): (components: MemoryTransportComponents) => Transport;
|
|
65
59
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE5F,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,eAAe,CAAA;IAEjC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE5F,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,eAAe,CAAA;IAEjC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,MAAM,CAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,CAAC,UAAU,EAAE,yBAAyB,KAAK,SAAS,CAIxG"}
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAmB7C,MAAM,UAAU,MAAM,CAAE,IAA0B;IAChD,OAAO,CAAC,UAAU,EAAE,EAAE;QACpB,OAAO,IAAI,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAC9C,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,YAAY,CAAA;AAG/D,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,qBAAqB,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC9H,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,MAAM,WAAW,2BAA4B,SAAQ,qBAAqB,EAAE,mBAAmB;IAC7F,eAAe,CAAC,EAAE,eAAe,CAAA;CAClC;AAED,qBAAa,uBAAwB,SAAQ,iBAAiB,CAAC,cAAc,CAAE,YAAW,QAAQ;IAChG,OAAO,CAAC,UAAU,CAAC,CAAW;IAC9B,OAAO,CAAC,UAAU,CAAC,CAAkB;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2B;IACtD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;IAClD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;gBAEvC,UAAU,EAAE,yBAAyB,EAAE,IAAI,EAAE,2BAA2B;IAS/E,MAAM,CAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,YAAY,CAAA;AAG/D,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,qBAAqB,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC9H,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,MAAM,WAAW,2BAA4B,SAAQ,qBAAqB,EAAE,mBAAmB;IAC7F,eAAe,CAAC,EAAE,eAAe,CAAA;CAClC;AAED,qBAAa,uBAAwB,SAAQ,iBAAiB,CAAC,cAAc,CAAE,YAAW,QAAQ;IAChG,OAAO,CAAC,UAAU,CAAC,CAAW;IAC9B,OAAO,CAAC,UAAU,CAAC,CAAkB;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2B;IACtD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;IAClD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;gBAEvC,UAAU,EAAE,yBAAyB,EAAE,IAAI,EAAE,2BAA2B;IAS/E,MAAM,CAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB3C,YAAY,CAAE,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAUhD,QAAQ,IAAK,SAAS,EAAE;IAUxB,mBAAmB,IAAK,IAAI;IAItB,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;CAa9B"}
|
package/dist/src/listener.js
CHANGED
|
@@ -17,8 +17,7 @@ export class MemoryTransportListener extends TypedEventEmitter {
|
|
|
17
17
|
setMaxListeners(Infinity, this.shutdownController.signal);
|
|
18
18
|
}
|
|
19
19
|
async listen(ma) {
|
|
20
|
-
const
|
|
21
|
-
const value = components[0]?.value;
|
|
20
|
+
const [[, value]] = ma.stringTuples();
|
|
22
21
|
const address = `/memory/${value ?? nanoid()}`;
|
|
23
22
|
if (value != null && connections.has(address)) {
|
|
24
23
|
throw new ListenError(`Memory address ${address} already in use`);
|
package/dist/src/listener.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAShE,MAAM,OAAO,uBAAwB,SAAQ,iBAAiC;IACpE,UAAU,CAAY;IACtB,UAAU,CAAmB;IACpB,UAAU,CAA2B;IACrC,IAAI,CAA6B;IACjC,kBAAkB,CAAiB;IAEpD,YAAa,UAAqC,EAAE,IAAiC;QACnF,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,kBAAkB,GAAG,IAAI,eAAe,EAAE,CAAA;QAC/C,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAC3D,CAAC;IAED,KAAK,CAAC,MAAM,CAAE,EAAa;QACzB,MAAM,
|
|
1
|
+
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAShE,MAAM,OAAO,uBAAwB,SAAQ,iBAAiC;IACpE,UAAU,CAAY;IACtB,UAAU,CAAmB;IACpB,UAAU,CAA2B;IACrC,IAAI,CAA6B;IACjC,kBAAkB,CAAiB;IAEpD,YAAa,UAAqC,EAAE,IAAiC;QACnF,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,kBAAkB,GAAG,IAAI,eAAe,EAAE,CAAA;QAC/C,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAC3D,CAAC;IAED,KAAK,CAAC,MAAM,CAAE,EAAa;QACzB,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,CAAA;QAErC,MAAM,OAAO,GAAG,WAAW,KAAK,IAAI,MAAM,EAAE,EAAE,CAAA;QAE9C,IAAI,KAAK,IAAI,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,WAAW,CAAC,kBAAkB,OAAO,iBAAiB,CAAC,CAAA;QACnE,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE;YACtD,GAAG,IAAI,CAAC,IAAI;YACZ,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1C,OAAO;SACR,CAAC,CAAA;QACF,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;QAEpC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;QAEzC,cAAc,CAAC,GAAG,EAAE;YAClB,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAA;QACrC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,YAAY,CAAE,MAA2B;QACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE;YACxC,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe;YAC5B,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM;SACvC,CAAC;aACC,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;IACN,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAA;QACX,CAAC;QAED,OAAO;YACL,IAAI,CAAC,UAAU;SAChB,CAAA;IACH,CAAC;IAED,mBAAmB;IAEnB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAA;QAExB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;YAC5B,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;QAChD,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAA;QAE/B,cAAc,CAAC,GAAG,EAAE;YAClB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;QACjC,CAAC,CAAC,CAAA;IACJ,CAAC;CACF"}
|
package/dist/src/memory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAI/F,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACrH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,qBAAa,eAAgB,YAAW,SAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2B;IACtD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;gBAE7B,UAAU,EAAE,yBAAyB,EAAE,IAAI,GAAE,mBAAwB;IAKlF,QAAQ,CAAC,CAAC,eAAe,CAAC,QAAO;IAEjC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAmB;IAEhD,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAEvC;IAEK,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC;IAwB9E;;;;OAIG;IACH,cAAc,CAAE,OAAO,EAAE,qBAAqB,GAAG,QAAQ;IAOzD,YAAY,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;IAInD,UAAU,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;CAGlD"}
|
package/dist/src/memory.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ConnectionFailedError, serviceCapabilities, transportSymbol } from '@libp2p/interface';
|
|
2
|
-
import { CODE_P2P } from '@multiformats/multiaddr';
|
|
3
2
|
import { Memory } from '@multiformats/multiaddr-matcher';
|
|
4
3
|
import { connections } from './connections.js';
|
|
5
4
|
import { MemoryTransportListener } from './listener.js';
|
|
@@ -17,12 +16,11 @@ export class MemoryTransport {
|
|
|
17
16
|
];
|
|
18
17
|
async dial(ma, options) {
|
|
19
18
|
options.signal.throwIfAborted();
|
|
20
|
-
const
|
|
21
|
-
const memoryConnection = connections.get(`${peerId == null ? ma : ma.decapsulate('/p2p')}`);
|
|
19
|
+
const memoryConnection = connections.get(`${ma.getPeerId() == null ? ma : ma.decapsulate('/p2p')}`);
|
|
22
20
|
if (memoryConnection == null) {
|
|
23
21
|
throw new ConnectionFailedError(`No memory listener found at ${ma}`);
|
|
24
22
|
}
|
|
25
|
-
const maConn = await memoryConnection.dial(this.components.peerId,
|
|
23
|
+
const maConn = await memoryConnection.dial(this.components.peerId, options.signal);
|
|
26
24
|
try {
|
|
27
25
|
options.signal.throwIfAborted();
|
|
28
26
|
return await options.upgrader.upgradeOutbound(maConn, {
|
package/dist/src/memory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC/F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC/F,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAKvD,MAAM,OAAO,eAAe;IACT,UAAU,CAA2B;IACrC,IAAI,CAAqB;IAE1C,YAAa,UAAqC,EAAE,OAA4B,EAAE;QAChF,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAEQ,CAAC,eAAe,CAAC,GAAG,IAAI,CAAA;IAExB,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,gBAAgB,CAAA;IAEvC,CAAC,mBAAmB,CAAC,GAAa;QACzC,mBAAmB;KACpB,CAAA;IAED,KAAK,CAAC,IAAI,CAAE,EAAa,EAAE,OAA6B;QACtD,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;QAE/B,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAEnG,IAAI,gBAAgB,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,qBAAqB,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAA;QACtE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QAElF,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;YAE/B,OAAO,MAAM,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE;gBACpD,GAAG,OAAO;gBACV,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe;aAC7B,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACjB,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAE,OAA8B;QAC5C,OAAO,IAAI,uBAAuB,CAAC,IAAI,CAAC,UAAU,EAAE;YAClD,GAAG,OAAO;YACV,GAAG,IAAI,CAAC,IAAI;SACb,CAAC,CAAA;IACJ,CAAC;IAED,YAAY,CAAE,UAAuB;QACnC,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;IACvD,CAAC;IAED,UAAU,CAAE,UAAuB;QACjC,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;IACtC,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/memory",
|
|
3
|
-
"version": "1.1.14-
|
|
3
|
+
"version": "1.1.14-87bc8d4fb",
|
|
4
4
|
"description": "A memory transport for libp2p",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/transport-memory#readme",
|
|
@@ -44,24 +44,23 @@
|
|
|
44
44
|
"test:electron-main": "aegir test -t electron-main"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@libp2p/interface": "2.11.0-
|
|
48
|
-
"@
|
|
49
|
-
"@multiformats/multiaddr": "^
|
|
50
|
-
"@multiformats/multiaddr-matcher": "^3.0.1",
|
|
47
|
+
"@libp2p/interface": "2.11.0-87bc8d4fb",
|
|
48
|
+
"@multiformats/multiaddr": "^12.4.4",
|
|
49
|
+
"@multiformats/multiaddr-matcher": "^2.0.0",
|
|
51
50
|
"@types/sinon": "^17.0.4",
|
|
52
51
|
"delay": "^6.0.0",
|
|
53
|
-
"it-map": "^3.1.
|
|
52
|
+
"it-map": "^3.1.3",
|
|
54
53
|
"it-pushable": "^3.2.3",
|
|
55
54
|
"main-event": "^1.0.1",
|
|
56
55
|
"nanoid": "^5.1.5",
|
|
57
|
-
"race-signal": "^
|
|
56
|
+
"race-signal": "^1.1.3",
|
|
58
57
|
"uint8arraylist": "^2.4.8"
|
|
59
58
|
},
|
|
60
59
|
"devDependencies": {
|
|
61
|
-
"@libp2p/logger": "5.2.0-
|
|
62
|
-
"@libp2p/peer-id": "5.1.9-
|
|
63
|
-
"aegir": "^47.0.
|
|
64
|
-
"sinon": "^
|
|
60
|
+
"@libp2p/logger": "5.2.0-87bc8d4fb",
|
|
61
|
+
"@libp2p/peer-id": "5.1.9-87bc8d4fb",
|
|
62
|
+
"aegir": "^47.0.14",
|
|
63
|
+
"sinon": "^20.0.0",
|
|
65
64
|
"sinon-ts": "^2.0.0"
|
|
66
65
|
},
|
|
67
66
|
"browser": {
|
package/src/connections.ts
CHANGED
|
@@ -1,12 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
*
|
|
4
|
+
* A [libp2p transport](https://docs.libp2p.io/concepts/transports/overview/)
|
|
5
|
+
* that operates in-memory only.
|
|
6
|
+
*
|
|
7
|
+
* This is intended for testing and can only be used to connect two libp2p nodes
|
|
8
|
+
* that are running in the same process.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
*
|
|
12
|
+
* ```TypeScript
|
|
13
|
+
* import { createLibp2p } from 'libp2p'
|
|
14
|
+
* import { memory } from '@libp2p/memory'
|
|
15
|
+
* import { multiaddr } from '@multiformats/multiaddr'
|
|
16
|
+
*
|
|
17
|
+
* const listener = await createLibp2p({
|
|
18
|
+
* addresses: {
|
|
19
|
+
* listen: [
|
|
20
|
+
* '/memory/node-a'
|
|
21
|
+
* ]
|
|
22
|
+
* },
|
|
23
|
+
* transports: [
|
|
24
|
+
* memory()
|
|
25
|
+
* ]
|
|
26
|
+
* })
|
|
27
|
+
*
|
|
28
|
+
* const dialer = await createLibp2p({
|
|
29
|
+
* transports: [
|
|
30
|
+
* memory()
|
|
31
|
+
* ]
|
|
32
|
+
* })
|
|
33
|
+
*
|
|
34
|
+
* const ma = multiaddr('/memory/node-a')
|
|
35
|
+
*
|
|
36
|
+
* // dial the listener, timing out after 10s
|
|
37
|
+
* const connection = await dialer.dial(ma, {
|
|
38
|
+
* signal: AbortSignal.timeout(10_000)
|
|
39
|
+
* })
|
|
40
|
+
*
|
|
41
|
+
* // use connection...
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
|
|
1
45
|
import { ConnectionFailedError } from '@libp2p/interface'
|
|
2
46
|
import { multiaddr } from '@multiformats/multiaddr'
|
|
3
47
|
import delay from 'delay'
|
|
48
|
+
import map from 'it-map'
|
|
4
49
|
import { pushable } from 'it-pushable'
|
|
5
50
|
import { raceSignal } from 'race-signal'
|
|
6
|
-
import { DEFAULT_MAX_MESSAGE_SIZE } from './constants.ts'
|
|
7
|
-
import { pushableToMaConn } from './pushable-to-conn.ts'
|
|
8
51
|
import type { MemoryTransportComponents, MemoryTransportInit } from './index.js'
|
|
9
|
-
import type {
|
|
52
|
+
import type { MultiaddrConnection, PeerId } from '@libp2p/interface'
|
|
10
53
|
import type { Uint8ArrayList } from 'uint8arraylist'
|
|
11
54
|
|
|
12
55
|
export const connections = new Map<string, MemoryConnection>()
|
|
@@ -20,74 +63,106 @@ interface MemoryConnectionInit extends MemoryTransportInit {
|
|
|
20
63
|
address: string
|
|
21
64
|
}
|
|
22
65
|
|
|
23
|
-
let connectionId = 0
|
|
24
|
-
|
|
25
66
|
export class MemoryConnection {
|
|
26
|
-
public readonly latency: number
|
|
27
|
-
|
|
28
67
|
private readonly components: MemoryTransportComponents
|
|
29
68
|
private readonly init: MemoryConnectionInit
|
|
30
69
|
private readonly connections: Set<MultiaddrConnection>
|
|
31
|
-
private readonly
|
|
70
|
+
private readonly latency: number
|
|
32
71
|
|
|
33
72
|
constructor (components: MemoryTransportComponents, init: MemoryConnectionInit) {
|
|
34
73
|
this.components = components
|
|
35
74
|
this.init = init
|
|
36
75
|
this.connections = new Set()
|
|
37
76
|
this.latency = init.latency ?? 0
|
|
38
|
-
this.log = components.logger.forComponent('libp2p:memory')
|
|
39
77
|
}
|
|
40
78
|
|
|
41
|
-
async dial (dialingPeerId: PeerId,
|
|
79
|
+
async dial (dialingPeerId: PeerId, signal: AbortSignal): Promise<MultiaddrConnection> {
|
|
80
|
+
const dialerPushable = pushable<Uint8Array | Uint8ArrayList>()
|
|
81
|
+
const listenerPushable = pushable<Uint8Array | Uint8ArrayList>()
|
|
42
82
|
const self = this
|
|
43
83
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
const listenerPushable = pushable<Uint8Array | Uint8ArrayList>({
|
|
58
|
-
onEnd (err) {
|
|
59
|
-
listenerEnded = true
|
|
60
|
-
self.connections.delete(listener)
|
|
61
|
-
|
|
62
|
-
if (!dialerEnded) {
|
|
63
|
-
dialerPushable.end(err)
|
|
84
|
+
const dialer: MultiaddrConnection = {
|
|
85
|
+
source: (async function * () {
|
|
86
|
+
yield * map(listenerPushable, async buf => {
|
|
87
|
+
if (self.latency > 0) {
|
|
88
|
+
await delay(self.latency)
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return buf
|
|
92
|
+
})
|
|
93
|
+
})(),
|
|
94
|
+
sink: async (source) => {
|
|
95
|
+
for await (const buf of source) {
|
|
96
|
+
dialerPushable.push(buf)
|
|
64
97
|
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
98
|
+
},
|
|
99
|
+
close: async () => {
|
|
100
|
+
dialerPushable.end()
|
|
101
|
+
this.connections.delete(dialer)
|
|
102
|
+
dialer.timeline.close = Date.now()
|
|
103
|
+
|
|
104
|
+
listenerPushable.end()
|
|
105
|
+
this.connections.delete(listener)
|
|
106
|
+
listener.timeline.close = Date.now()
|
|
107
|
+
},
|
|
108
|
+
abort: (err) => {
|
|
109
|
+
dialerPushable.end(err)
|
|
110
|
+
this.connections.delete(dialer)
|
|
111
|
+
dialer.timeline.close = Date.now()
|
|
112
|
+
|
|
113
|
+
listenerPushable.end(err)
|
|
114
|
+
this.connections.delete(listener)
|
|
115
|
+
listener.timeline.close = Date.now()
|
|
116
|
+
},
|
|
117
|
+
timeline: {
|
|
118
|
+
open: Date.now()
|
|
119
|
+
},
|
|
70
120
|
remoteAddr: multiaddr(`${this.init.address}/p2p/${this.components.peerId}`),
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
121
|
+
log: this.components.logger.forComponent('libp2p:memory')
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const listener: MultiaddrConnection = {
|
|
125
|
+
source: (async function * () {
|
|
126
|
+
yield * map(dialerPushable, async buf => {
|
|
127
|
+
if (self.latency > 0) {
|
|
128
|
+
await delay(self.latency)
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return buf
|
|
132
|
+
})
|
|
133
|
+
})(),
|
|
134
|
+
sink: async (source) => {
|
|
135
|
+
for await (const buf of source) {
|
|
136
|
+
listenerPushable.push(buf)
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
close: async () => {
|
|
140
|
+
listenerPushable.end()
|
|
141
|
+
this.connections.delete(listener)
|
|
142
|
+
listener.timeline.close = Date.now()
|
|
143
|
+
|
|
144
|
+
dialerPushable.end()
|
|
145
|
+
this.connections.delete(dialer)
|
|
146
|
+
dialer.timeline.close = Date.now()
|
|
147
|
+
},
|
|
148
|
+
abort: (err) => {
|
|
149
|
+
listenerPushable.end(err)
|
|
150
|
+
this.connections.delete(listener)
|
|
151
|
+
listener.timeline.close = Date.now()
|
|
152
|
+
|
|
153
|
+
dialerPushable.end(err)
|
|
154
|
+
this.connections.delete(dialer)
|
|
155
|
+
dialer.timeline.close = Date.now()
|
|
156
|
+
},
|
|
157
|
+
timeline: {
|
|
158
|
+
open: Date.now()
|
|
159
|
+
},
|
|
80
160
|
remoteAddr: multiaddr(`${this.init.address}-outgoing/p2p/${dialingPeerId}`),
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
remotePushable: dialerPushable,
|
|
84
|
-
log: this.log.newScope(`connection:${connectionId}`),
|
|
85
|
-
maxMessageSize: this.init.maxMessageSize ?? DEFAULT_MAX_MESSAGE_SIZE
|
|
86
|
-
})
|
|
161
|
+
log: this.components.logger.forComponent('libp2p:memory')
|
|
162
|
+
}
|
|
87
163
|
|
|
88
164
|
this.connections.add(dialer)
|
|
89
165
|
this.connections.add(listener)
|
|
90
|
-
connectionId++
|
|
91
166
|
|
|
92
167
|
await raceSignal(delay(this.latency), signal)
|
|
93
168
|
|
package/src/index.ts
CHANGED
|
@@ -59,13 +59,6 @@ export interface MemoryTransportInit {
|
|
|
59
59
|
* @default 0
|
|
60
60
|
*/
|
|
61
61
|
latency?: number
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Data messages larger than this will be chunked before sending
|
|
65
|
-
*
|
|
66
|
-
* @default 65_536
|
|
67
|
-
*/
|
|
68
|
-
maxMessageSize?: number
|
|
69
62
|
}
|
|
70
63
|
|
|
71
64
|
export function memory (init?: MemoryTransportInit): (components: MemoryTransportComponents) => Transport {
|