Skip to content

Commit 4c67aa9

Browse files
committed
Make master references weak in HumanObjectPeerTestInstance.swift
1 parent 28c065e commit 4c67aa9

File tree

1 file changed

+25
-15
lines changed

1 file changed

+25
-15
lines changed

ci/LDKSwift/Tests/LDKSwiftTests/HumanObjectPeerTestInstance.swift

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public class HumanObjectPeerTestInstance {
3535
fileprivate class Peer {
3636

3737
private(set) var txBroadcaster: BroadcasterInterface!
38-
let master: HumanObjectPeerTestInstance
38+
weak var master: HumanObjectPeerTestInstance!
3939
let logger: Logger
4040
let feeEstimator: FeeEstimator
4141
let seed: UInt8
@@ -60,36 +60,39 @@ public class HumanObjectPeerTestInstance {
6060
var chainMonitor: ChainMonitor?
6161

6262
fileprivate class TestBroadcaster: BroadcasterInterface {
63-
let master: Peer
64-
fileprivate init(master: Peer){
65-
self.master = master
63+
weak var master: Peer!
64+
65+
fileprivate init(master: Peer) {
66+
self.master = master
6667
super.init()
6768
}
6869
}
6970

7071
fileprivate class TestFilter: Filter {
7172

72-
let master: Peer
73+
weak var master: Peer!
7374

7475
fileprivate init(master: Peer) {
7576
self.master = master
7677
super.init()
7778
}
79+
7880
override func register_output(output: WatchedOutput) -> Option_C2Tuple_usizeTransactionZZ {
7981
self.master.filterAdditions.insert("\(output.get_outpoint().get_txid()):\(output.get_outpoint().get_index())")
8082
return Option_C2Tuple_usizeTransactionZZ(value: nil)
8183
}
84+
8285
override func register_tx(txid: [UInt8]?, script_pubkey: [UInt8]) {
8386
self.master.filterAdditions.insert("\(txid)")
8487
}
8588
}
8689

8790
fileprivate class TestKeysInterface: KeysInterface {
8891

89-
let master: Peer
92+
weak var master: Peer!
9093
let interface: KeysInterface
9194

92-
fileprivate init(master: Peer, underlyingInterface: KeysInterface){
95+
fileprivate init(master: Peer, underlyingInterface: KeysInterface) {
9396
self.master = master
9497
self.interface = underlyingInterface
9598
super.init()
@@ -104,7 +107,7 @@ public class HumanObjectPeerTestInstance {
104107

105108
fileprivate class TestChannelManagerPersister: ChannelManagerPersister, ExtendedChannelManagerPersister {
106109

107-
let master: Peer
110+
weak var master: Peer!
108111

109112
fileprivate init(master: Peer) {
110113
self.master = master
@@ -121,6 +124,7 @@ public class HumanObjectPeerTestInstance {
121124
override func persist_new_channel(id: OutPoint, data: ChannelMonitor) -> Result_NoneChannelMonitorUpdateErrZ {
122125
return Result_NoneChannelMonitorUpdateErrZ.ok()
123126
}
127+
124128
override func update_persisted_channel(id: OutPoint, update: ChannelMonitorUpdate, data: ChannelMonitor) -> Result_NoneChannelMonitorUpdateErrZ {
125129
return Result_NoneChannelMonitorUpdateErrZ.ok()
126130
}
@@ -144,7 +148,7 @@ public class HumanObjectPeerTestInstance {
144148

145149
if master.use_manual_watch || false { // don't support manual watch yet
146150
// self.chainMonitor
147-
}else{
151+
} else {
148152
self.chainMonitor = ChainMonitor(chain_source: self.filter, broadcaster: self.txBroadcaster, logger: self.logger, feeest: self.feeEstimator, persister: persister)
149153
self.chainWatch = self.chainMonitor!.as_Watch()
150154
}
@@ -160,7 +164,7 @@ public class HumanObjectPeerTestInstance {
160164

161165
if master.use_km_wrapper {
162166
// self.keysInterface = manual_
163-
}else {
167+
} else {
164168
self.keysInterface = keysManager.as_KeysInterface()
165169
self.explicitKeysManager = keysManager
166170
}
@@ -169,7 +173,7 @@ public class HumanObjectPeerTestInstance {
169173

170174
}
171175

172-
fileprivate convenience init (master: HumanObjectPeerTestInstance, seed: UInt8) {
176+
fileprivate convenience init(master: HumanObjectPeerTestInstance, seed: UInt8) {
173177
self.init(master: master, _dummy: (), seed: seed)
174178

175179
if master.use_chan_manager_constructor {
@@ -182,13 +186,13 @@ public class HumanObjectPeerTestInstance {
182186
self.channelManager = ChannelManager(fee_est: self.feeEstimator, chain_monitor: self.chainWatch!, tx_broadcaster: self.txBroadcaster, logger: self.logger, keys_manager: self.keysInterface, config: UserConfig(), params: chainParameters)
183187
let randomData = self.keysInterface.get_secure_random_bytes()
184188
let messageHandler = MessageHandler(chan_handler_arg: self.channelManager.as_ChannelMessageHandler(), route_handler_arg: self.router.as_RoutingMessageHandler())
185-
PeerManager(message_handler: messageHandler, our_node_secret: self.keysInterface.get_node_secret(), ephemeral_random_data: randomData, logger: self.logger)
189+
self.peerManager = PeerManager(message_handler: messageHandler, our_node_secret: self.keysInterface.get_node_secret(), ephemeral_random_data: randomData, logger: self.logger)
186190
}
187191
self.nodeId = self.channelManager.get_our_node_id()
188192
self.bindSocketHandler()
189193
}
190194

191-
fileprivate convenience init (original: Peer) {
195+
fileprivate convenience init(original: Peer) {
192196
self.init(master: original.master, _dummy: (), seed: original.seed)
193197

194198
if master.use_chan_manager_constructor {
@@ -229,6 +233,10 @@ public class HumanObjectPeerTestInstance {
229233

230234
}
231235

236+
deinit {
237+
print("deiniting Peer")
238+
}
239+
232240
}
233241

234242
func do_read_event(pm: PeerManager, descriptor: SocketDescriptor, data: [UInt8]) {
@@ -241,7 +249,7 @@ public class HumanObjectPeerTestInstance {
241249
if self.use_nio_peer_handler {
242250
let connectionResult = peerA.tcpSocketHandler?.connect(address: "127.0.0.1", port: peerB.tcpPort!, theirNodeId: peerB.nodeId!)
243251
print("connection result: \(connectionResult)")
244-
}else{
252+
} else {
245253
// not currently relevant; we need the TCP connection simulation
246254
}
247255
}
@@ -253,16 +261,18 @@ public class HumanObjectPeerTestInstance {
253261
connectPeers(peerA: peer1, peerB: peer2)
254262

255263
let semaphore = DispatchSemaphore(value: 0)
264+
256265
DispatchQueue.global(qos: .background).async {
257266
print("waiting five seconds")
258267
sleep(5)
259268
semaphore.signal()
260269
print("finished waiting five seconds")
261270
}
271+
262272
semaphore.wait()
263273
peer1.constructor?.interrupt()
264274
peer2.constructor?.interrupt()
275+
265276
}
266277

267278
}
268-

0 commit comments

Comments
 (0)