update to ppppp-net

This commit is contained in:
Andre Staltz 2024-01-12 16:28:55 +02:00
parent 4febda05ef
commit c7510947b5
No known key found for this signature in database
GPG Key ID: 9EDE23EA7E8A4890
2 changed files with 22 additions and 8 deletions

View File

@ -11,7 +11,7 @@ module.exports = function startPeer() {
return SecretStack()
.use(require('secret-stack/plugins/net'))
.use(require('secret-handshake-ext/secret-stack'))
.use(require('ssb-conn'))
.use(require('ppppp-net'))
.use(require('./plugin-hub.cjs'))
.use(require('./plugin-hub-client.cjs'))
.call(null, {
@ -38,7 +38,7 @@ module.exports = function startPeer() {
},
},
},
conn: {
net: {
autostart: false,
},
})

View File

@ -1,3 +1,4 @@
const bs58 = require('bs58')
const cat = require('pull-cat')
const Notify = require('pull-notify')
const pull = require('pull-stream')
@ -17,10 +18,22 @@ function ErrorDuplex(message) {
}
}
/**
* @param {Array<[any, any]>} parsedAddress
* @returns {string | undefined}
*/
function extractSHSEPubkey(parsedAddress) {
for (const [transport, transform] of parsedAddress) {
if (transform.name === 'shse') {
return bs58.encode(transform.pubkey)
}
}
}
module.exports = {
name: 'hub',
version: '1.0.0',
// needs: ['conn'], // FIXME: uncomment once we re-write conn
needs: ['net'],
manifest: {
createTunnel: 'duplex',
ping: 'sync',
@ -65,14 +78,15 @@ module.exports = {
const notifyAttendants = Notify()
pull(
peer.conn.hub().listen(),
peer.net.listen(),
pull.filter(
({ type }) => type === 'connecting-failed' || type === 'disconnected'
),
pull.filter(({ key }) => !!key && attendants.has(key)),
pull.drain(({ key }) => {
debug('farewell %s', key)
attendants.delete(key)
pull.map(({ parsedAddress }) => extractSHSEPubkey(parsedAddress)),
pull.filter((pubkey) => !!pubkey && attendants.has(pubkey)),
pull.drain((pubkey) => {
debug('farewell %s', pubkey)
attendants.delete(pubkey)
notifyAttendants([...attendants.keys()])
})
)