@@ -4,6 +4,7 @@ const lp = require('pull-length-prefixed')
44const pull = require ( 'pull-stream' )
55const waterfall = require ( 'async/waterfall' )
66const each = require ( 'async/each' )
7+ const setImmediate = require ( 'async/setImmediate' )
78
89const Message = require ( './types/message' )
910const CONSTANTS = require ( './constants' )
@@ -27,7 +28,7 @@ class Network {
2728 // this.libp2p.swarm.setMaxListeners(CONSTANTS.maxListeners)
2829 }
2930
30- start ( ) {
31+ start ( callback ) {
3132 this . _running = true
3233 // bind event listeners
3334 this . _onPeerConnect = this . _onPeerConnect . bind ( this )
@@ -41,18 +42,24 @@ class Network {
4142 this . libp2p . on ( 'peer:disconnect' , this . _onPeerDisconnect )
4243
4344 // All existing connections are like new ones for us
44- this . libp2p . peerBook . getAllArray ( ) . filter ( ( peer ) => peer . isConnected ( ) )
45- . forEach ( ( peer ) => this . _onPeerConnect ( ( peer ) ) )
45+ this . libp2p . peerBook
46+ . getAllArray ( )
47+ . filter ( ( peer ) => peer . isConnected ( ) )
48+ . forEach ( ( peer ) => this . _onPeerConnect ( ( peer ) ) )
49+
50+ setImmediate ( ( ) => callback ( ) )
4651 }
4752
48- stop ( ) {
53+ stop ( callback ) {
4954 this . _running = false
5055
5156 this . libp2p . unhandle ( BITSWAP100 )
5257 if ( ! this . b100Only ) { this . libp2p . unhandle ( BITSWAP110 ) }
5358
5459 this . libp2p . removeListener ( 'peer:connect' , this . _onPeerConnect )
5560 this . libp2p . removeListener ( 'peer:disconnect' , this . _onPeerDisconnect )
61+
62+ setImmediate ( ( ) => callback ( ) )
5663 }
5764
5865 // Handles both types of bitswap messgages
@@ -66,18 +73,15 @@ class Network {
6673 pull . asyncMap ( ( data , cb ) => Message . deserialize ( data , cb ) ) ,
6774 pull . asyncMap ( ( msg , cb ) => {
6875 conn . getPeerInfo ( ( err , peerInfo ) => {
69- if ( err ) {
70- return cb ( err )
71- }
76+ if ( err ) { return cb ( err ) }
77+
7278 // log('data from', peerInfo.id.toB58String())
7379 this . bitswap . _receiveMessage ( peerInfo . id , msg , cb )
7480 } )
7581 } ) ,
7682 pull . onEnd ( ( err ) => {
7783 log ( 'ending connection' )
78- if ( err ) {
79- return this . bitswap . _receiveError ( err )
80- }
84+ if ( err ) { return this . bitswap . _receiveError ( err ) }
8185 } )
8286 )
8387 }
@@ -147,27 +151,21 @@ class Network {
147151
148152 // Dial to the peer and try to use the most recent Bitswap
149153 _dialPeer ( peer , callback ) {
150- // dialByPeerInfo throws if no network is there
151- try {
152- // Attempt Bitswap 1.1.0
153- this . libp2p . dial ( peer , BITSWAP110 , ( err , conn ) => {
154- if ( err ) {
155- // Attempt Bitswap 1.0.0
156- this . libp2p . dial ( peer , BITSWAP100 , ( err , conn ) => {
157- if ( err ) {
158- return callback ( err )
159- }
160-
161- callback ( null , conn , BITSWAP100 )
162- } )
163- return
164- }
165-
166- callback ( null , conn , BITSWAP110 )
167- } )
168- } catch ( err ) {
169- return callback ( err )
170- }
154+ // Attempt Bitswap 1.1.0
155+ this . libp2p . dial ( peer , BITSWAP110 , ( err , conn ) => {
156+ if ( err ) {
157+ // Attempt Bitswap 1.0.0
158+ this . libp2p . dial ( peer , BITSWAP100 , ( err , conn ) => {
159+ if ( err ) { return callback ( err ) }
160+
161+ callback ( null , conn , BITSWAP100 )
162+ } )
163+
164+ return
165+ }
166+
167+ callback ( null , conn , BITSWAP110 )
168+ } )
171169 }
172170}
173171
0 commit comments