mirror of
https://github.com/fluencelabs/js-libp2p-interfaces
synced 2025-04-29 11:32:22 +00:00
refactor: remove dependency on libp2p-tcp for stream muxers
This commit is contained in:
parent
d168c7d531
commit
bbf1b556bc
@ -53,7 +53,6 @@
|
|||||||
"it-pipe": "^1.1.0",
|
"it-pipe": "^1.1.0",
|
||||||
"it-pushable": "^1.4.0",
|
"it-pushable": "^1.4.0",
|
||||||
"libp2p-crypto": "^0.18.0",
|
"libp2p-crypto": "^0.18.0",
|
||||||
"libp2p-tcp": "^0.15.0",
|
|
||||||
"multiaddr": "^8.0.0",
|
"multiaddr": "^8.0.0",
|
||||||
"multibase": "^3.0.0",
|
"multibase": "^3.0.0",
|
||||||
"p-defer": "^3.0.0",
|
"p-defer": "^3.0.0",
|
||||||
|
@ -5,14 +5,10 @@
|
|||||||
const pair = require('it-pair/duplex')
|
const pair = require('it-pair/duplex')
|
||||||
const pipe = require('it-pipe')
|
const pipe = require('it-pipe')
|
||||||
const { consume } = require('streaming-iterables')
|
const { consume } = require('streaming-iterables')
|
||||||
const Tcp = require('libp2p-tcp')
|
|
||||||
const multiaddr = require('multiaddr')
|
|
||||||
const abortable = require('abortable-iterator')
|
const abortable = require('abortable-iterator')
|
||||||
const AbortController = require('abort-controller')
|
const AbortController = require('abort-controller')
|
||||||
const uint8arrayFromString = require('uint8arrays/from-string')
|
const uint8arrayFromString = require('uint8arrays/from-string')
|
||||||
|
|
||||||
const mh = multiaddr('/ip4/127.0.0.1/tcp/0')
|
|
||||||
|
|
||||||
function pause (ms) {
|
function pause (ms) {
|
||||||
return new Promise(resolve => setTimeout(resolve, ms))
|
return new Promise(resolve => setTimeout(resolve, ms))
|
||||||
}
|
}
|
||||||
@ -38,33 +34,31 @@ module.exports = (common) => {
|
|||||||
Muxer = await common.setup()
|
Muxer = await common.setup()
|
||||||
})
|
})
|
||||||
|
|
||||||
it('closing underlying socket closes streams (tcp)', async () => {
|
it('closing underlying socket closes streams', async () => {
|
||||||
const mockConn = muxer => ({
|
const mockConn = muxer => ({
|
||||||
newStream: (...args) => muxer.newStream(...args)
|
newStream: (...args) => muxer.newStream(...args)
|
||||||
})
|
})
|
||||||
|
|
||||||
const mockUpgrade = () => maConn => {
|
const mockUpgrade = maConn => {
|
||||||
const muxer = new Muxer(stream => pipe(stream, stream))
|
const muxer = new Muxer(stream => pipe(stream, stream))
|
||||||
pipe(maConn, muxer, maConn)
|
pipe(maConn, muxer, maConn)
|
||||||
return mockConn(muxer)
|
return mockConn(muxer)
|
||||||
}
|
}
|
||||||
|
|
||||||
const mockUpgrader = () => ({
|
const [local, remote] = pair()
|
||||||
upgradeInbound: mockUpgrade(),
|
const controller = new AbortController()
|
||||||
upgradeOutbound: mockUpgrade()
|
const abortableRemote = abortable.duplex(remote, controller.signal, {
|
||||||
|
returnOnAbort: true
|
||||||
})
|
})
|
||||||
|
|
||||||
const tcp = new Tcp({ upgrader: mockUpgrader() })
|
mockUpgrade(abortableRemote)
|
||||||
const tcpListener = tcp.createListener()
|
const dialerConn = mockUpgrade(local)
|
||||||
|
|
||||||
await tcpListener.listen(mh)
|
|
||||||
const dialerConn = await tcp.dial(tcpListener.getAddrs()[0])
|
|
||||||
|
|
||||||
const s1 = await dialerConn.newStream()
|
const s1 = await dialerConn.newStream()
|
||||||
const s2 = await dialerConn.newStream()
|
const s2 = await dialerConn.newStream()
|
||||||
|
|
||||||
// close the listener in a bit
|
// close the remote in a bit
|
||||||
setTimeout(() => tcpListener.close(), 50)
|
setTimeout(() => controller.abort(), 50)
|
||||||
|
|
||||||
const s1Result = pipe(infiniteRandom, s1, consume)
|
const s1Result = pipe(infiniteRandom, s1, consume)
|
||||||
const s2Result = pipe(infiniteRandom, s2, consume)
|
const s2Result = pipe(infiniteRandom, s2, consume)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user