@@ -17,58 +17,65 @@ class Demonstration {
17
17
public static var peer : Peer ?
18
18
static var channelManager : ChannelManager ?
19
19
20
- static func setupPeerManager( ) {
20
+ static func setupPeerManager( ) -> Promise < Void > {
21
21
22
22
let privateKey = Data . init ( base64Encoded: " ERERERERERERERERERERERERERERERERERERERERERE= " ) !;
23
23
let ephemeralPrivateKey = Data . init ( base64Encoded: " EhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhI= " ) !;
24
24
let remotePublicKey = Data . init ( base64Encoded: " Ao11AN1MEmhdH1aLTCtQSOhTS4czGfOo2qYStGkTLsf3 " ) !;
25
25
let alexPublicKey = Data . init ( base64Encoded: " AnRVrvhFPZL0cGtWC2FSfMIX3fFNpBdw6O1mBxkKGFG4 " ) !;
26
26
let localPublicKey = Data . init ( base64Encoded: " Ai/bcTpKVRYmMWTmDDLOvG9MrW5v7xRNY5vXzcsLIPZZ " ) !;
27
27
28
- let peerManager = PeerManager ( privateKey: privateKey, ephemeralSeed: ephemeralPrivateKey)
28
+ return self . setupChannelManager ( ) . done { manager in
29
+ let peerManager = PeerManager ( privateKey: privateKey, ephemeralSeed: ephemeralPrivateKey, channelManager: manager. cChannelManager!)
29
30
30
31
31
- // set up block listener
32
- let chainWatchInterface = peerManager. routingMessageHandler!. cChainWatchInterface
33
- let blockListener = BlockNotifierBasedBlockListener ( chainWatchInterface: chainWatchInterface)
32
+ // set up block listener
33
+ let chainWatchInterface = peerManager. routingMessageHandler!. cChainWatchInterface
34
+ let blockListener = BlockNotifierBasedBlockListener ( chainWatchInterface: chainWatchInterface)
34
35
35
- // set up chain monitor
36
- let chainMonitor = BlockchainMonitor ( )
37
- chainMonitor. listener = blockListener // connect the two
38
- chainMonitor. monitor ( ) // off we go
36
+ // set up chain monitor
37
+ let chainMonitor = BlockchainMonitor ( )
38
+ chainMonitor. listener = blockListener // connect the two
39
+ chainMonitor. monitor ( ) // off we go
39
40
40
- /*
41
- // a connection to be discarded
42
- peerManager.initiateOutboundConnection(remotePublicKey: remotePublicKey)
41
+ /*
42
+ // a connection to be discarded
43
+ peerManager.initiateOutboundConnection(remotePublicKey: remotePublicKey)
43
44
44
- // a custom peer to be discarded
45
- print("Creating Google Peer")
46
- let googleClient = TCPClient(address: "google.com", port: 443)
47
- let fakePeer = CustomPeer(tcpClient: googleClient)
48
- fakePeer.name = "Google"
49
- */
45
+ // a custom peer to be discarded
46
+ print("Creating Google Peer")
47
+ let googleClient = TCPClient(address: "google.com", port: 443)
48
+ let fakePeer = CustomPeer(tcpClient: googleClient)
49
+ fakePeer.name = "Google"
50
+ */
50
51
51
52
52
- print ( " Creating Alex Bosworth peer " )
53
- let tcpClient = TCPClient ( address: " testnet-lnd.yalls.org " , port: 9735 )
54
- let peer = CustomPeer ( tcpClient: tcpClient)
55
- peer. name = " Alex "
56
- peer. publicKey = alexPublicKey
53
+ print ( " Creating Alex Bosworth peer " )
54
+ let tcpClient = TCPClient ( address: " testnet-lnd.yalls.org " , port: 9735 )
55
+ let peer = CustomPeer ( tcpClient: tcpClient)
56
+ peer. name = " Alex "
57
+ peer. publicKey = alexPublicKey
57
58
58
- // print("Creating local peer")
59
- // let tcpClient = TCPClient(address: "127.0.0.1", port: 1337)
60
- // let peer = CustomPeer(tcpClient: tcpClient)
61
- // peer.name = "Local"
59
+ // print("Creating local peer")
60
+ // let tcpClient = TCPClient(address: "127.0.0.1", port: 1337)
61
+ // let peer = CustomPeer(tcpClient: tcpClient)
62
+ // peer.name = "Local"
62
63
63
- self . peer = peer;
64
- peerManager. initiateOutboundConnection ( remotePublicKey: alexPublicKey, peer: peer)
64
+ self . peer = peer;
65
+ peerManager. initiateOutboundConnection ( remotePublicKey: alexPublicKey, peer: peer)
66
+
67
+ }
65
68
}
66
69
67
70
enum BlockchainFetchError : Error {
68
71
case didntWork
69
72
}
70
73
71
74
static func setupChannelManager( ) -> Promise < ChannelManager > {
75
+ if let channelManager = self . channelManager {
76
+ return Promise . value ( channelManager)
77
+ }
78
+
72
79
let heightPromise = Promise { ( resolver: Resolver < UInt > ) in
73
80
let latestBlockUrl = " https://test.bitgo.com/api/v2/tbtc/public/block/latest "
74
81
AF . request ( latestBlockUrl) . responseJSON { response in
@@ -96,6 +103,7 @@ class Demonstration {
96
103
let logger = Logger ( )
97
104
print ( " Instantiating Swift ChannelManager " )
98
105
let manager = ChannelManager ( privateKey: privateKey, logger: logger, currentBlockchainHeight: height)
106
+ self . channelManager = manager
99
107
return manager
100
108
}
101
109
}
0 commit comments