@@ -5,7 +5,6 @@ const PeerInfo = require('peer-info')
5
5
const multiaddr = require ( 'multiaddr' )
6
6
const EventEmitter = require ( 'events' ) . EventEmitter
7
7
const debug = require ( 'debug' )
8
- const includes = require ( 'lodash/includes' )
9
8
const setImmediate = require ( 'async/setImmediate' )
10
9
11
10
const log = debug ( 'libp2p:railing' )
@@ -15,49 +14,36 @@ class Railing extends EventEmitter {
15
14
constructor ( bootstrapers ) {
16
15
super ( )
17
16
this . bootstrapers = bootstrapers
17
+ this . interval = null
18
18
}
19
19
20
20
start ( callback ) {
21
21
setImmediate ( ( ) => callback ( ) )
22
- setImmediate ( ( ) => {
23
- this . bootstrapers . forEach ( ( candidate ) => {
24
- candidate = multiaddr ( candidate )
22
+ if ( this . interval ) { return }
25
23
26
- let ma
27
- if ( includes ( candidate . protoNames ( ) , 'ipfs' ) ) {
28
- ma = candidate . decapsulate ( 'ipfs' )
29
- }
24
+ this . interval = setInterval ( ( ) => {
25
+ this . bootstrapers . forEach ( ( candidate ) => {
26
+ const ma = multiaddr ( candidate )
30
27
31
- // TODO: switch for multiaddr.getPeerId once merged
32
- let peerIdB58Str
33
- try {
34
- peerIdB58Str = candidate . stringTuples ( ) . filter ( ( tuple ) => {
35
- if ( tuple [ 0 ] === candidate . protos ( ) . filter ( ( proto ) => {
36
- return proto . name === 'ipfs'
37
- } ) [ 0 ] . code ) {
38
- return true
39
- }
40
- } ) [ 0 ] [ 1 ]
41
- } catch ( e ) {
42
- throw new Error ( 'Error extracting IPFS id from multiaddr' , e )
43
- }
28
+ const peerId = PeerId . createFromB58String ( ma . getPeerId ( ) )
44
29
45
- const peerId = PeerId . createFromB58String ( peerIdB58Str )
46
30
PeerInfo . create ( peerId , ( err , peerInfo ) => {
47
- if ( err ) {
48
- return log . error ( 'Error creating PeerInfo from bootstrap peer' , err )
49
- }
31
+ if ( err ) { return log . error ( 'Invalid bootstrap peer id' , err ) }
50
32
51
33
peerInfo . multiaddrs . add ( ma )
52
34
53
35
this . emit ( 'peer' , peerInfo )
54
36
} )
55
37
} )
56
- } )
38
+ } , 10000 )
57
39
}
58
40
59
41
stop ( callback ) {
60
42
setImmediate ( callback )
43
+ if ( this . interval ) {
44
+ clearInterval ( this . interval )
45
+ this . interval = null
46
+ }
61
47
}
62
48
}
63
49
0 commit comments