From 300bf95a495a916307367c8ea23b46b55fcaa02f Mon Sep 17 00:00:00 2001 From: Friedel Ziegelmayer Date: Wed, 21 Dec 2016 17:59:59 +0100 Subject: [PATCH] feat: emit full messages, instead of just data (#13) --- src/index.js | 10 ++++++---- test/2-nodes.js | 9 ++++++--- test/multiple-nodes.js | 6 +++--- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/index.js b/src/index.js index cf8378227e..df78e3c448 100644 --- a/src/index.js +++ b/src/index.js @@ -158,7 +158,7 @@ class FloodSub extends EventEmitter { this.cache.put(seqno) // 2. emit to self - this._emitMessages(msg.topicCIDs, [msg.data]) + this._emitMessages(msg.topicCIDs, [msg]) // 3. propagate msg to others this._forwardMessages(msg.topicCIDs, [msg]) @@ -213,9 +213,6 @@ class FloodSub extends EventEmitter { topics = ensureArray(topics) messages = ensureArray(messages) - // Emit to self if I'm interested - this._emitMessages(topics, messages) - const from = this.libp2p.peerInfo.id.toB58String() const buildMessage = (msg) => { @@ -230,6 +227,11 @@ class FloodSub extends EventEmitter { } } + const msgObjects = messages.map(buildMessage) + + // Emit to self if I'm interested + this._emitMessages(topics, msgObjects) + // send to all the other peers this._forwardMessages(topics, messages.map(buildMessage)) } diff --git a/test/2-nodes.js b/test/2-nodes.js index 37efa9dd9f..e8e59383a4 100644 --- a/test/2-nodes.js +++ b/test/2-nodes.js @@ -81,7 +81,7 @@ describe('basics', () => { function shouldNotHappen (msg) { expect.fail() } psA.once('Z', (msg) => { - expect(msg.toString()).to.equal('hey') + expect(msg.data.toString()).to.equal('hey') psB.removeListener('Z', shouldNotHappen) done() }) @@ -96,7 +96,7 @@ describe('basics', () => { psA.once('Z', (msg) => { psA.once('Z', shouldNotHappen) - expect(msg.toString()).to.equal('banana') + expect(msg.data.toString()).to.equal('banana') setTimeout(() => { psA.removeListener('Z', shouldNotHappen) psB.removeListener('Z', shouldNotHappen) @@ -117,7 +117,10 @@ describe('basics', () => { psA.on('Z', receivedMsg) function receivedMsg (msg) { - expect(msg.toString()).to.equal('banana') + expect(msg.data.toString()).to.equal('banana') + expect(msg.from).to.be.eql(psB.libp2p.peerInfo.id.toB58String()) + expect(Buffer.isBuffer(msg.seqno)).to.be.true + expect(msg.topicCIDs).to.be.eql(['Z']) if (++counter === 10) { psA.removeListener('Z', receivedMsg) diff --git a/test/multiple-nodes.js b/test/multiple-nodes.js index fc38313130..e1396039bc 100644 --- a/test/multiple-nodes.js +++ b/test/multiple-nodes.js @@ -123,7 +123,7 @@ describe('multiple nodes', () => { a.ps.publish('Z', new Buffer('hey')) function incMsg (msg) { - expect(msg.toString()).to.equal('hey') + expect(msg.data.toString()).to.equal('hey') check() } @@ -156,7 +156,7 @@ describe('multiple nodes', () => { b.ps.publish('Z', new Buffer('hey')) function incMsg (msg) { - expect(msg.toString()).to.equal('hey') + expect(msg.data.toString()).to.equal('hey') check() } @@ -268,7 +268,7 @@ describe('multiple nodes', () => { c.ps.publish('Z', new Buffer('hey from c')) function incMsg (msg) { - expect(msg.toString()).to.equal('hey from c') + expect(msg.data.toString()).to.equal('hey from c') check() }