Skip to content

Commit cb3497c

Browse files
authored
chore: remove peer-info usage (#102)
BREAKING CHANGE: using new topology api with peer-id instead of peer-info and new pubsub internal peer data structure
1 parent 6641c65 commit cb3497c

File tree

8 files changed

+96
-98
lines changed

8 files changed

+96
-98
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ js-libp2p-floodsub
3838
const FloodSub = require('libp2p-floodsub')
3939

4040
// registrar is provided by libp2p
41-
const fsub = new FloodSub(peerInfo, registrar, options)
41+
const fsub = new FloodSub(peerId, registrar, options)
4242

4343
await fsub.start()
4444

@@ -56,7 +56,7 @@ fsub.publish('fruit', new Buffer('banana'))
5656

5757
```js
5858
const options = {…}
59-
const floodsub = new Floodsub(peerInfo, registrar, options)
59+
const floodsub = new Floodsub(peerId, registrar, options)
6060
```
6161

6262
Options is an optional object with the following key-value pairs:
@@ -75,9 +75,9 @@ Floodsub emits two kinds of events:
7575
- `data`: a Buffer containing the data that was published to the topic
7676
2. `floodsub:subscription-change` when the local peer receives an update to the subscriptions of a remote peer.
7777
```Javascript
78-
fsub.on('floodsub:subscription-change', (peerInfo, topics, changes) => { ... })
78+
fsub.on('floodsub:subscription-change', (peerId, topics, changes) => { ... })
7979
```
80-
- `peerInfo`: a [PeerInfo](https://github.com/libp2p/js-peer-info) object
80+
- `peerId`: a [PeerId](https://github.com/libp2p/js-peer-id) object
8181
- `topics`: the topics that the peer is now subscribed to
8282
- `changes`: an array of `{ topicID: <topic>, subscribe: <boolean> }`
8383
eg `[ { topicID: 'fruit', subscribe: true }, { topicID: 'vegetables': false } ]`

package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,17 +52,16 @@
5252
"lodash": "^4.17.15",
5353
"multiaddr": "^7.1.0",
5454
"p-defer": "^3.0.0",
55-
"peer-id": "~0.13.3",
56-
"peer-info": "~0.17.0",
5755
"sinon": "^9.0.1"
5856
},
5957
"dependencies": {
6058
"async.nexttick": "^0.5.2",
6159
"debug": "^4.1.1",
6260
"it-length-prefixed": "^3.0.0",
6361
"it-pipe": "^1.0.1",
64-
"libp2p-pubsub": "~0.4.0",
62+
"libp2p-pubsub": "^0.5.0",
6563
"p-map": "^3.0.0",
64+
"peer-id": "~0.13.3",
6665
"protons": "^1.0.1",
6766
"time-cache": "^0.3.0"
6867
},

src/index.js

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const pMap = require('p-map')
1111
const TimeCache = require('time-cache')
1212
const nextTick = require('async.nexttick')
1313

14-
const PeerInfo = require('peer-info')
14+
const PeerId = require('peer-id')
1515
const BaseProtocol = require('libp2p-pubsub')
1616
const { message, utils } = require('libp2p-pubsub')
1717
const { multicodec } = require('./config')
@@ -43,7 +43,7 @@ function validateRegistrar (registrar) {
4343
*/
4444
class FloodSub extends BaseProtocol {
4545
/**
46-
* @param {PeerInfo} peerInfo instance of the peer's PeerInfo
46+
* @param {PeerId} peerId instance of the peer's PeerId
4747
* @param {Object} registrar
4848
* @param {function} registrar.handle
4949
* @param {function} registrar.register
@@ -52,17 +52,17 @@ class FloodSub extends BaseProtocol {
5252
* @param {boolean} options.emitSelf if publish should emit to self, if subscribed, defaults to false
5353
* @constructor
5454
*/
55-
constructor (peerInfo, registrar, options = {}) {
56-
if (!PeerInfo.isPeerInfo(peerInfo)) {
57-
throw new Error('peer info must be an instance of `peer-info`')
55+
constructor (peerId, registrar, options = {}) {
56+
if (!PeerId.isPeerId(peerId)) {
57+
throw new Error('peerId must be an instance of `peer-id`')
5858
}
5959

6060
validateRegistrar(registrar)
6161

6262
super({
6363
debugName: debugName,
6464
multicodecs: multicodec,
65-
peerInfo: peerInfo,
65+
peerId: peerId,
6666
registrar: registrar,
6767
...options
6868
})
@@ -94,13 +94,13 @@ class FloodSub extends BaseProtocol {
9494
/**
9595
* Peer connected successfully with pubsub protocol.
9696
* @override
97-
* @param {PeerInfo} peerInfo peer info
97+
* @param {PeerId} peerId peer id
9898
* @param {Connection} conn connection to the peer
9999
* @returns {Promise<void>}
100100
*/
101-
async _onPeerConnected (peerInfo, conn) {
102-
await super._onPeerConnected(peerInfo, conn)
103-
const idB58Str = peerInfo.id.toB58String()
101+
async _onPeerConnected (peerId, conn) {
102+
await super._onPeerConnected(peerId, conn)
103+
const idB58Str = peerId.toB58String()
104104
const peer = this.peers.get(idB58Str)
105105

106106
if (peer && peer.isWritable) {
@@ -115,7 +115,7 @@ class FloodSub extends BaseProtocol {
115115
* @override
116116
* @param {string} idB58Str peer id string in base58
117117
* @param {Connection} conn connection
118-
* @param {PeerInfo} peer peer info
118+
* @param {Peer} peer peer
119119
* @returns {void}
120120
*
121121
*/
@@ -134,7 +134,7 @@ class FloodSub extends BaseProtocol {
134134
}
135135
)
136136
} catch (err) {
137-
this._onPeerDisconnected(peer, err)
137+
this._onPeerDisconnected(peer.id, err)
138138
}
139139
}
140140

@@ -161,7 +161,7 @@ class FloodSub extends BaseProtocol {
161161

162162
if (peer && subs && subs.length) {
163163
peer.updateSubscriptions(subs)
164-
this.emit('floodsub:subscription-change', peer.info, peer.topics, subs)
164+
this.emit('floodsub:subscription-change', peer.id, peer.topics, subs)
165165
}
166166
}
167167

@@ -222,7 +222,7 @@ class FloodSub extends BaseProtocol {
222222

223223
peer.sendMessages(utils.normalizeOutRpcMessages(messages))
224224

225-
log('publish msgs on topics', topics, peer.info.id.toB58String())
225+
log('publish msgs on topics', topics, peer.id.toB58String())
226226
})
227227
}
228228

@@ -254,7 +254,7 @@ class FloodSub extends BaseProtocol {
254254
topics = ensureArray(topics)
255255
messages = ensureArray(messages)
256256

257-
const from = this.peerInfo.id.toB58String()
257+
const from = this.peerId.toB58String()
258258

259259
const buildMessage = (msg) => {
260260
const seqno = utils.randomSeqno()

test/2-nodes.spec.js

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const { multicodec } = require('../src')
1515
const {
1616
defOptions,
1717
first,
18-
createPeerInfo,
18+
createPeerId,
1919
createMockRegistrar,
2020
expectSet,
2121
ConnectionPair
@@ -27,21 +27,21 @@ function shouldNotHappen (_) {
2727

2828
describe('basics between 2 nodes', () => {
2929
describe('fresh nodes', () => {
30-
let peerInfoA, peerInfoB
30+
let peerIdA, peerIdB
3131
let fsA, fsB
3232

3333
const registrarRecordA = {}
3434
const registrarRecordB = {}
3535

3636
// Mount pubsub protocol
3737
before(async () => {
38-
[peerInfoA, peerInfoB] = await Promise.all([
39-
createPeerInfo(),
40-
createPeerInfo()
38+
[peerIdA, peerIdB] = await Promise.all([
39+
createPeerId(),
40+
createPeerId()
4141
])
4242

43-
fsA = new FloodSub(peerInfoA, createMockRegistrar(registrarRecordA), defOptions)
44-
fsB = new FloodSub(peerInfoB, createMockRegistrar(registrarRecordB), defOptions)
43+
fsA = new FloodSub(peerIdA, createMockRegistrar(registrarRecordA), defOptions)
44+
fsB = new FloodSub(peerIdB, createMockRegistrar(registrarRecordB), defOptions)
4545

4646
expect(fsA.peers.size).to.be.eql(0)
4747
expect(fsA.subscriptions.size).to.eql(0)
@@ -62,13 +62,13 @@ describe('basics between 2 nodes', () => {
6262

6363
// Notice peers of connection
6464
const [c0, c1] = ConnectionPair()
65-
await onConnectA(peerInfoB, c0)
65+
await onConnectA(peerIdB, c0)
6666

6767
await handleB({
6868
protocol: multicodec,
6969
stream: c1.stream,
7070
connection: {
71-
remotePeer: peerInfoA.id
71+
remotePeer: peerIdA
7272
}
7373
})
7474

@@ -87,11 +87,11 @@ describe('basics between 2 nodes', () => {
8787
const defer = pDefer()
8888

8989
fsA.subscribe('Z')
90-
fsB.once('floodsub:subscription-change', (changedPeerInfo, changedTopics, changedSubs) => {
90+
fsB.once('floodsub:subscription-change', (changedPeerId, changedTopics, changedSubs) => {
9191
expectSet(fsA.subscriptions, ['Z'])
9292
expect(fsB.peers.size).to.equal(1)
9393
expectSet(first(fsB.peers).topics, ['Z'])
94-
expect(changedPeerInfo.id.toB58String()).to.equal(first(fsB.peers).info.id.toB58String())
94+
expect(changedPeerId.toB58String()).to.equal(first(fsB.peers).id.toB58String())
9595
expectSet(changedTopics, ['Z'])
9696
expect(changedSubs).to.be.eql([{ topicID: 'Z', subscribe: true }])
9797
defer.resolve()
@@ -147,7 +147,7 @@ describe('basics between 2 nodes', () => {
147147

148148
function receivedMsg (msg) {
149149
expect(msg.data.toString()).to.equal('banana')
150-
expect(msg.from).to.be.eql(fsB.peerInfo.id.toB58String())
150+
expect(msg.from).to.be.eql(fsB.peerId.toB58String())
151151
expect(Buffer.isBuffer(msg.seqno)).to.be.true()
152152
expect(msg.topicIDs).to.be.eql(['Z'])
153153

@@ -172,7 +172,7 @@ describe('basics between 2 nodes', () => {
172172

173173
function receivedMsg (msg) {
174174
expect(msg.data.toString()).to.equal('banana')
175-
expect(msg.from).to.be.eql(fsB.peerInfo.id.toB58String())
175+
expect(msg.from).to.be.eql(fsB.peerId.toB58String())
176176
expect(Buffer.isBuffer(msg.seqno)).to.be.true()
177177
expect(msg.topicIDs).to.be.eql(['Z'])
178178

@@ -197,10 +197,10 @@ describe('basics between 2 nodes', () => {
197197
fsA.unsubscribe('Z')
198198
expect(fsA.subscriptions.size).to.equal(0)
199199

200-
fsB.once('floodsub:subscription-change', (changedPeerInfo, changedTopics, changedSubs) => {
200+
fsB.once('floodsub:subscription-change', (changedPeerId, changedTopics, changedSubs) => {
201201
expect(fsB.peers.size).to.equal(1)
202202
expectSet(first(fsB.peers).topics, [])
203-
expect(changedPeerInfo.id.toB58String()).to.equal(first(fsB.peers).info.id.toB58String())
203+
expect(changedPeerId.toB58String()).to.equal(first(fsB.peers).id.toB58String())
204204
expectSet(changedTopics, [])
205205
expect(changedSubs).to.be.eql([{ topicID: 'Z', subscribe: false }])
206206

@@ -230,21 +230,21 @@ describe('basics between 2 nodes', () => {
230230
})
231231

232232
describe('nodes send state on connection', () => {
233-
let peerInfoA, peerInfoB
233+
let peerIdA, peerIdB
234234
let fsA, fsB
235235

236236
const registrarRecordA = {}
237237
const registrarRecordB = {}
238238

239239
// Mount pubsub protocol
240240
before(async () => {
241-
[peerInfoA, peerInfoB] = await Promise.all([
242-
createPeerInfo(),
243-
createPeerInfo()
241+
[peerIdA, peerIdB] = await Promise.all([
242+
createPeerId(),
243+
createPeerId()
244244
])
245245

246-
fsA = new FloodSub(peerInfoA, createMockRegistrar(registrarRecordA), defOptions)
247-
fsB = new FloodSub(peerInfoB, createMockRegistrar(registrarRecordB), defOptions)
246+
fsA = new FloodSub(peerIdA, createMockRegistrar(registrarRecordA), defOptions)
247+
fsB = new FloodSub(peerIdB, createMockRegistrar(registrarRecordB), defOptions)
248248
})
249249

250250
// Start pubsub
@@ -278,8 +278,8 @@ describe('basics between 2 nodes', () => {
278278

279279
// Notice peers of connection
280280
const [c0, c1] = ConnectionPair()
281-
await onConnectA(peerInfoB, c0)
282-
await onConnectB(peerInfoA, c1)
281+
await onConnectA(peerIdB, c0)
282+
await onConnectB(peerIdA, c1)
283283
}
284284

285285
await Promise.all([

test/emit-self.spec.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,20 @@ const expect = chai.expect
99
const FloodSub = require('../src')
1010

1111
const {
12-
createPeerInfo, mockRegistrar
12+
createPeerId, mockRegistrar
1313
} = require('./utils')
1414

1515
const shouldNotHappen = (_) => expect.fail()
1616

1717
describe('emit self', () => {
1818
let floodsub
19-
let peerInfo
19+
let peerId
2020
const topic = 'Z'
2121

2222
describe('enabled', () => {
2323
before(async () => {
24-
peerInfo = await createPeerInfo()
25-
floodsub = new FloodSub(peerInfo, mockRegistrar, { emitSelf: true })
24+
peerId = await createPeerId()
25+
floodsub = new FloodSub(peerId, mockRegistrar, { emitSelf: true })
2626
})
2727

2828
before(async () => {
@@ -44,8 +44,8 @@ describe('emit self', () => {
4444

4545
describe('disabled', () => {
4646
before(async () => {
47-
peerInfo = await createPeerInfo()
48-
floodsub = new FloodSub(peerInfo, mockRegistrar, { emitSelf: false })
47+
peerId = await createPeerId()
48+
floodsub = new FloodSub(peerId, mockRegistrar, { emitSelf: false })
4949
})
5050

5151
before(async () => {

0 commit comments

Comments
 (0)