@@ -6,26 +6,26 @@ const _values = require('lodash.values')
6
6
7
7
const OFFLINE_ERROR = require ( '../utils' ) . OFFLINE_ERROR
8
8
9
- let subscriptions = { }
10
-
11
- const addSubscription = ( topic , request , stream ) => {
12
- subscriptions [ topic ] = { request : request , stream : stream }
13
- }
9
+ module . exports = function pubsub ( self ) {
10
+ let subscriptions = { }
14
11
15
- const removeSubscription = promisify ( ( topic , callback ) => {
16
- if ( ! subscriptions [ topic ] ) {
17
- return callback ( new Error ( `Not subscribed to ${ topic } ` ) )
12
+ const addSubscription = ( topic , request , stream ) => {
13
+ subscriptions [ topic ] = { request : request , stream : stream }
18
14
}
19
15
20
- subscriptions [ topic ] . stream . emit ( 'end' )
21
- delete subscriptions [ topic ]
16
+ const removeSubscription = promisify ( ( topic , callback ) => {
17
+ if ( ! subscriptions [ topic ] ) {
18
+ return callback ( new Error ( `Not subscribed to ${ topic } ` ) )
19
+ }
22
20
23
- if ( callback ) {
24
- callback ( null )
25
- }
26
- } )
21
+ subscriptions [ topic ] . stream . emit ( 'end' )
22
+ delete subscriptions [ topic ]
23
+
24
+ if ( callback ) {
25
+ callback ( null )
26
+ }
27
+ } )
27
28
28
- module . exports = function pubsub ( self ) {
29
29
return {
30
30
subscribe : promisify ( ( topic , options , callback ) => {
31
31
if ( ! self . isOnline ( ) ) {
@@ -47,7 +47,11 @@ module.exports = function pubsub (self) {
47
47
48
48
// There is no explicit unsubscribe; subscriptions have a cancel event
49
49
stream . cancel = promisify ( ( cb ) => {
50
+ // Remove the event listener
51
+ self . _pubsub . removeAllListeners ( topic )
52
+ // Make sure floodsub knows we've unsubscribed
50
53
self . _pubsub . unsubscribe ( topic )
54
+ // Remove the subscription from pubsub's internal state
51
55
removeSubscription ( topic , cb )
52
56
} )
53
57
@@ -113,8 +117,9 @@ module.exports = function pubsub (self) {
113
117
let peers = [ ]
114
118
115
119
try {
120
+ // This part should be moved down to floodsub
121
+ // Just return the list of peers
116
122
const peerSet = self . _pubsub . getPeerSet ( )
117
- console . log ( peerSet )
118
123
_values ( peerSet ) . forEach ( ( peer ) => {
119
124
const idB58Str = peer . peerInfo . id . toB58String ( )
120
125
const index = peer . topics . indexOf ( topic )
0 commit comments