Skip to content

Commit ad87781

Browse files
committed
Update batteries to work with version 0.0.14
1 parent 152a1e4 commit ad87781

File tree

7 files changed

+102
-47
lines changed

7 files changed

+102
-47
lines changed

bindings/LDK/structs/BackgroundProcessor.swift

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,22 @@ public class BackgroundProcessor: NativeTypeWrapper {
66
internal var cOpaqueStruct: LDKBackgroundProcessor?
77

88

9-
/* DEFAULT_CONSTRUCTOR_START */
10-
#warning("This method passes non-cloneable objects by owned value. Here be dragons.")
11-
@available(*, deprecated, message: "This method passes non-cloneable objects by owned value. Here be dragons.")
12-
public init(persister: ChannelManagerPersister, event_handler: EventHandler, chain_monitor: ChainMonitor, channel_manager: ChannelManager, net_graph_msg_handler: NetGraphMsgHandler, peer_manager: PeerManager, logger: Logger) {
13-
Self.instanceCounter += 1
14-
self.instanceNumber = Self.instanceCounter
15-
9+
/* DEFAULT_CONSTRUCTOR_START */
10+
#warning("This method passes non-cloneable objects by owned value. Here be dragons.")
11+
@available(*, deprecated, message: "This method passes non-cloneable objects by owned value. Here be dragons.")
12+
public init(persister: ChannelManagerPersister, event_handler: EventHandler, chain_monitor: ChainMonitor, channel_manager: ChannelManager, net_graph_msg_handler: NetGraphMsgHandler?, peer_manager: PeerManager, logger: Logger) {
13+
Self.instanceCounter += 1
14+
self.instanceNumber = Self.instanceCounter
15+
16+
let graphMessageHandler = net_graph_msg_handler?.dangle().cOpaqueStruct! ?? LDKNetGraphMsgHandler(inner: nil, is_owned: true)
17+
1618
self.cOpaqueStruct = withUnsafePointer(to: chain_monitor.cOpaqueStruct!) { (chain_monitorPointer: UnsafePointer<LDKChainMonitor>) in
17-
withUnsafePointer(to: channel_manager.cOpaqueStruct!) { (channel_managerPointer: UnsafePointer<LDKChannelManager>) in
18-
withUnsafePointer(to: peer_manager.cOpaqueStruct!) { (peer_managerPointer: UnsafePointer<LDKPeerManager>) in
19-
BackgroundProcessor_start(persister.cOpaqueStruct!, event_handler.cOpaqueStruct!, chain_monitorPointer, channel_managerPointer, net_graph_msg_handler.cOpaqueStruct!, peer_managerPointer, logger.cOpaqueStruct!)
20-
}
21-
}
22-
}
19+
withUnsafePointer(to: channel_manager.cOpaqueStruct!) { (channel_managerPointer: UnsafePointer<LDKChannelManager>) in
20+
withUnsafePointer(to: peer_manager.cOpaqueStruct!) { (peer_managerPointer: UnsafePointer<LDKPeerManager>) in
21+
BackgroundProcessor_start(persister.cOpaqueStruct!, event_handler.cOpaqueStruct!, chain_monitorPointer, channel_managerPointer, graphMessageHandler, peer_managerPointer, logger.cOpaqueStruct!)
22+
}
23+
}
24+
}
2325
super.init(conflictAvoidingVariableName: 0)
2426
}
2527
/* DEFAULT_CONSTRUCTOR_END */

bindings/batteries/ChannelManagerConstructor.swift

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,10 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
2727

2828
let logger: Logger
2929
fileprivate var customPersister: CustomChannelManagerPersister?
30-
fileprivate var customEventHandler: CustomEventHandler?
30+
fileprivate var customEventHandler: EventHandler?
31+
fileprivate var net_graph: NetworkGraph?
32+
fileprivate var graph_msg_handler: NetGraphMsgHandler?
33+
fileprivate var payer: InvoicePayer?
3134
public let peerManager: PeerManager
3235

3336

@@ -42,7 +45,7 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
4245
private let chain_monitor: ChainMonitor
4346

4447

45-
public init(channel_manager_serialized: [UInt8], channel_monitors_serialized: [[UInt8]], keys_interface: KeysInterface, fee_estimator: FeeEstimator, chain_monitor: ChainMonitor, filter: Filter?, router: NetGraphMsgHandler?, tx_broadcaster: BroadcasterInterface, logger: Logger) throws {
48+
public init(channel_manager_serialized: [UInt8], channel_monitors_serialized: [[UInt8]], keys_interface: KeysInterface, fee_estimator: FeeEstimator, chain_monitor: ChainMonitor, filter: Filter?, net_graph: NetworkGraph?, tx_broadcaster: BroadcasterInterface, logger: Logger) throws {
4649

4750
var monitors: [LDKChannelMonitor] = []
4851
self.channel_monitors = []
@@ -56,9 +59,9 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
5659

5760
let value: LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr = channelMonitorResult.cOpaqueStruct!.contents
5861
let a: LDKThirtyTwoBytes = value.result!.pointee.a
59-
var b: LDKChannelMonitor = value.result!.pointee.b
62+
let b: LDKChannelMonitor = value.result!.pointee.b
6063

61-
var clonedChannelMonitor = ChannelMonitor(pointer: b).dangle().clone()
64+
let clonedChannelMonitor = ChannelMonitor(pointer: b).dangle().clone()
6265
// var clonedChannelMonitor = currentChannelMonitor.clone(orig: currentChannelMonitor)
6366
clonedChannelMonitor.cOpaqueStruct?.is_owned = false // is_owned should never have to be modified
6467

@@ -87,13 +90,18 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
8790
self.logger = logger
8891

8992
let random_data = keys_interface.get_secure_random_bytes();
90-
if let router = router {
91-
let messageHandler = MessageHandler(chan_handler_arg: channelManager.as_ChannelMessageHandler(), route_handler_arg: router.as_RoutingMessageHandler())
92-
self.peerManager = PeerManager(message_handler: messageHandler.dangle(), our_node_secret: keys_interface.get_node_secret(), ephemeral_random_data: random_data, logger: self.logger, custom_message_handler: IgnoringMessageHandler().as_CustomMessageHandler())
93+
94+
self.net_graph = net_graph
95+
let noCustomMessages = IgnoringMessageHandler()
96+
var messageHandler: MessageHandler!
97+
if let netGraph = net_graph {
98+
self.graph_msg_handler = NetGraphMsgHandler(network_graph: netGraph, chain_access: Option_AccessZ.none(), logger: logger)
99+
messageHandler = MessageHandler(chan_handler_arg: channelManager.as_ChannelMessageHandler(), route_handler_arg: self.graph_msg_handler!.as_RoutingMessageHandler())
93100
} else {
94-
let messageHandler = MessageHandler(chan_handler_arg: channelManager.as_ChannelMessageHandler(), route_handler_arg: IgnoringMessageHandler().as_RoutingMessageHandler())
95-
self.peerManager = PeerManager(message_handler: messageHandler.dangle(), our_node_secret: keys_interface.get_node_secret(), ephemeral_random_data: random_data, logger: self.logger, custom_message_handler: IgnoringMessageHandler().as_CustomMessageHandler())
101+
messageHandler = MessageHandler(chan_handler_arg: channelManager.as_ChannelMessageHandler(), route_handler_arg: noCustomMessages.as_RoutingMessageHandler())
96102
}
103+
104+
self.peerManager = PeerManager(message_handler: messageHandler.dangle(), our_node_secret: keys_interface.get_node_secret(), ephemeral_random_data: random_data, logger: self.logger, custom_message_handler: IgnoringMessageHandler().as_CustomMessageHandler())
97105

98106
if let filter = filter {
99107
for (currentMonitor, _) in self.channel_monitors {
@@ -112,7 +120,8 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
112120
/**
113121
* Constructs a channel manager from the given interface implementations
114122
*/
115-
public init(network: LDKNetwork, config: UserConfig, current_blockchain_tip_hash: [UInt8], current_blockchain_tip_height: UInt32, keys_interface: KeysInterface, fee_estimator: FeeEstimator, chain_monitor: ChainMonitor, router: NetGraphMsgHandler?, tx_broadcaster: BroadcasterInterface, logger: Logger) {
123+
public init(network: LDKNetwork, config: UserConfig, current_blockchain_tip_hash: [UInt8], current_blockchain_tip_height: UInt32, keys_interface: KeysInterface, fee_estimator: FeeEstimator, chain_monitor: ChainMonitor, net_graph: NetworkGraph?, tx_broadcaster: BroadcasterInterface, logger: Logger) {
124+
116125
self.channel_monitors = []
117126
self.channel_manager_latest_block_hash = nil
118127
self.chain_monitor = chain_monitor
@@ -122,13 +131,18 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
122131
self.logger = logger
123132

124133
let random_data = keys_interface.get_secure_random_bytes();
125-
if let router = router {
126-
let messageHandler = MessageHandler(chan_handler_arg: channelManager.as_ChannelMessageHandler(), route_handler_arg: router.as_RoutingMessageHandler())
127-
self.peerManager = PeerManager(message_handler: messageHandler.dangle(), our_node_secret: keys_interface.get_node_secret(), ephemeral_random_data: random_data, logger: self.logger, custom_message_handler: IgnoringMessageHandler().as_CustomMessageHandler())
134+
135+
self.net_graph = net_graph
136+
let noCustomMessages = IgnoringMessageHandler()
137+
var messageHandler: MessageHandler!
138+
if let netGraph = net_graph {
139+
self.graph_msg_handler = NetGraphMsgHandler(network_graph: netGraph, chain_access: Option_AccessZ.none(), logger: logger)
140+
messageHandler = MessageHandler(chan_handler_arg: channelManager.as_ChannelMessageHandler(), route_handler_arg: self.graph_msg_handler!.as_RoutingMessageHandler())
128141
} else {
129-
let messageHandler = MessageHandler(chan_handler_arg: channelManager.as_ChannelMessageHandler(), route_handler_arg: IgnoringMessageHandler().as_RoutingMessageHandler())
130-
self.peerManager = PeerManager(message_handler: messageHandler.dangle(), our_node_secret: keys_interface.get_node_secret(), ephemeral_random_data: random_data, logger: self.logger, custom_message_handler: IgnoringMessageHandler().as_CustomMessageHandler())
142+
messageHandler = MessageHandler(chan_handler_arg: channelManager.as_ChannelMessageHandler(), route_handler_arg: noCustomMessages.as_RoutingMessageHandler())
131143
}
144+
self.peerManager = PeerManager(message_handler: messageHandler.dangle(), our_node_secret: keys_interface.get_node_secret(), ephemeral_random_data: random_data, logger: logger, custom_message_handler: noCustomMessages.as_CustomMessageHandler())
145+
132146

133147
super.init(conflictAvoidingVariableName: 0)
134148
// try! self.peerManager.addAnchor(anchor: self)
@@ -147,7 +161,7 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
147161
* This also spawns a background thread which will call the appropriate methods on the provided
148162
* ChannelManagerPersister as required.
149163
*/
150-
public func chain_sync_completed(persister: ExtendedChannelManagerPersister) {
164+
public func chain_sync_completed(persister: ExtendedChannelManagerPersister, scorer: MultiThreadedLockableScore?) {
151165

152166
if self.backgroundProcessor != nil {
153167
return
@@ -169,8 +183,19 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
169183

170184
self.customPersister = CustomChannelManagerPersister(handler: persister)
171185
self.customEventHandler = CustomEventHandler(handler: persister)
172-
let netGraphMessageHandler = NetGraphMsgHandler(pointer: LDKNetGraphMsgHandler(inner: nil, is_owned: false))
173-
self.backgroundProcessor = BackgroundProcessor(persister: self.customPersister!, event_handler: self.customEventHandler!, chain_monitor: self.chain_monitor, channel_manager: self.channelManager, net_graph_msg_handler: netGraphMessageHandler, peer_manager: self.peerManager, logger: self.logger)
186+
// let netGraphMessageHandler = NetGraphMsgHandler(pointer: LDKNetGraphMsgHandler(inner: nil, is_owned: false))
187+
188+
if let netGraph = self.net_graph, let scorer = scorer {
189+
let router = DefaultRouter(network_graph: netGraph, logger: self.logger)
190+
self.payer = InvoicePayer(payer: self.channelManager.as_Payer(), router: router.as_Router(), scorer: scorer, logger: self.logger, event_handler: self.customEventHandler!, retry_attempts: RetryAttempts(a_arg: 3))
191+
self.customEventHandler = self.payer!.as_EventHandler()
192+
}
193+
194+
// if there is a graph msg handler, set its is_owned to false
195+
self.graph_msg_handler?.cOpaqueStruct?.is_owned = false
196+
197+
self.backgroundProcessor = BackgroundProcessor(persister: self.customPersister!, event_handler: self.customEventHandler!, chain_monitor: self.chain_monitor, channel_manager: self.channelManager, net_graph_msg_handler: self.graph_msg_handler, peer_manager: self.peerManager, logger: self.logger)
198+
174199
try! self.backgroundProcessor!.addAnchor(anchor: self.peerManager)
175200
try! self.backgroundProcessor!.addAnchor(anchor: persister)
176201
try! self.backgroundProcessor!.addAnchor(anchor: self.customEventHandler!)
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
```swift
2+
/* DEFAULT_CONSTRUCTOR_START */
3+
#warning("This method passes non-cloneable objects by owned value. Here be dragons.")
4+
@available(*, deprecated, message: "This method passes non-cloneable objects by owned value. Here be dragons.")
5+
public init(persister: ChannelManagerPersister, event_handler: EventHandler, chain_monitor: ChainMonitor, channel_manager: ChannelManager, net_graph_msg_handler: NetGraphMsgHandler?, peer_manager: PeerManager, logger: Logger) {
6+
Self.instanceCounter += 1
7+
self.instanceNumber = Self.instanceCounter
8+
9+
let graphMessageHandler = net_graph_msg_handler?.dangle().cOpaqueStruct! ?? LDKNetGraphMsgHandler(inner: nil, is_owned: true)
10+
11+
self.cOpaqueStruct = withUnsafePointer(to: chain_monitor.cOpaqueStruct!) { (chain_monitorPointer: UnsafePointer<LDKChainMonitor>) in
12+
withUnsafePointer(to: channel_manager.cOpaqueStruct!) { (channel_managerPointer: UnsafePointer<LDKChannelManager>) in
13+
withUnsafePointer(to: peer_manager.cOpaqueStruct!) { (peer_managerPointer: UnsafePointer<LDKPeerManager>) in
14+
BackgroundProcessor_start(persister.cOpaqueStruct!, event_handler.cOpaqueStruct!, chain_monitorPointer, channel_managerPointer, graphMessageHandler, peer_managerPointer, logger.cOpaqueStruct!)
15+
}
16+
}
17+
}
18+
super.init(conflictAvoidingVariableName: 0)
19+
}
20+
```

xcode/DirectBindingsApp/DirectBindingsAppTests/DirectBindingsAppTests.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ class DirectBindingsAppTests: XCTestCase {
6666
fee_estimator: feeEstimator,
6767
chain_monitor: chainMonitor,
6868
filter: filter,
69-
router: nil,
69+
net_graph: nil,
7070
tx_broadcaster: broadcaster,
7171
logger: logger
7272
)
@@ -82,7 +82,7 @@ class DirectBindingsAppTests: XCTestCase {
8282
channel_manager.as_Confirm().transactions_confirmed(header: header, txdata: txdata, height: 525)
8383

8484

85-
channel_manager_constructor.chain_sync_completed(persister: cmPersister)
85+
channel_manager_constructor.chain_sync_completed(persister: cmPersister, scorer: nil)
8686

8787
channel_manager_constructor.interrupt()
8888

@@ -124,7 +124,8 @@ class DirectBindingsAppTests: XCTestCase {
124124
path.append(extraHop)
125125
}
126126

127-
let route = Route(paths_arg: [path])
127+
let payee = Payee(pubkey: Self.hexStringToBytes(hexString: destPubkeyHex)!)
128+
let route = Route(paths_arg: [path], payee_arg: payee)
128129
}
129130

130131
func testExtendedActivity() throws {

xcode/DirectBindingsApp/DirectBindingsAppTests/HumanObjectPeerTestInstance.swift

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -122,11 +122,11 @@ public class HumanObjectPeerTestInstance {
122122
}
123123

124124
fileprivate class TestPersister: Persist {
125-
override func persist_new_channel(id: OutPoint, data: ChannelMonitor) -> Result_NoneChannelMonitorUpdateErrZ {
125+
override func persist_new_channel(channel_id: OutPoint, data: ChannelMonitor, update_id: MonitorUpdateId) -> Result_NoneChannelMonitorUpdateErrZ {
126126
return Result_NoneChannelMonitorUpdateErrZ.ok()
127127
}
128128

129-
override func update_persisted_channel(id: OutPoint, update: ChannelMonitorUpdate, data: ChannelMonitor) -> Result_NoneChannelMonitorUpdateErrZ {
129+
override func update_persisted_channel(channel_id: OutPoint, update: ChannelMonitorUpdate, data: ChannelMonitor, update_id: MonitorUpdateId) -> Result_NoneChannelMonitorUpdateErrZ {
130130
return Result_NoneChannelMonitorUpdateErrZ.ok()
131131
}
132132
}
@@ -179,8 +179,14 @@ public class HumanObjectPeerTestInstance {
179179
self.init(master: master, _dummy: (), seed: seed)
180180

181181
if master.use_chan_manager_constructor {
182-
self.constructor = ChannelManagerConstructor(network: LDKNetwork_Bitcoin, config: UserConfig(), current_blockchain_tip_hash: [UInt8](repeating: 0, count: 32), current_blockchain_tip_height: 0, keys_interface: self.keysInterface, fee_estimator: self.feeEstimator, chain_monitor: self.chainMonitor!, router: self.router, tx_broadcaster: self.txBroadcaster, logger: self.logger)
183-
self.constructor?.chain_sync_completed(persister: TestChannelManagerPersister(master: self))
182+
183+
let graph = NetworkGraph(genesis_hash: [UInt8](repeating: 0, count: 32))
184+
self.constructor = ChannelManagerConstructor(network: LDKNetwork_Bitcoin, config: UserConfig(), current_blockchain_tip_hash: [UInt8](repeating: 0, count: 32), current_blockchain_tip_height: 0, keys_interface: self.keysInterface, fee_estimator: self.feeEstimator, chain_monitor: self.chainMonitor!, net_graph: graph, tx_broadcaster: self.txBroadcaster, logger: self.logger)
185+
186+
// self.constructor = ChannelManagerConstructor(network: LDKNetwork_Bitcoin, config: UserConfig(), current_blockchain_tip_hash: [UInt8](repeating: 0, count: 32), current_blockchain_tip_height: 0, keys_interface: self.keysInterface, fee_estimator: self.feeEstimator, chain_monitor: self.chainMonitor!, net_graph: nil, tx_broadcaster: self.txBroadcaster, logger: self.logger)
187+
188+
189+
self.constructor?.chain_sync_completed(persister: TestChannelManagerPersister(master: self), scorer: nil)
184190
self.channelManager = self.constructor!.channelManager
185191
self.peerManager = self.constructor!.peerManager
186192
} else {
@@ -198,8 +204,9 @@ public class HumanObjectPeerTestInstance {
198204
self.init(master: original.master, _dummy: (), seed: original.seed)
199205

200206
if master.use_chan_manager_constructor {
201-
self.constructor = ChannelManagerConstructor(network: LDKNetwork_Bitcoin, config: UserConfig(), current_blockchain_tip_hash: [UInt8](repeating: 0, count: 32), current_blockchain_tip_height: 0, keys_interface: self.keysInterface, fee_estimator: self.feeEstimator, chain_monitor: self.chainMonitor!, router: self.router, tx_broadcaster: self.txBroadcaster, logger: self.logger)
202-
self.constructor?.chain_sync_completed(persister: TestChannelManagerPersister(master: self))
207+
let graph = NetworkGraph(genesis_hash: [UInt8](repeating: 0, count: 32))
208+
self.constructor = ChannelManagerConstructor(network: LDKNetwork_Bitcoin, config: UserConfig(), current_blockchain_tip_hash: [UInt8](repeating: 0, count: 32), current_blockchain_tip_height: 0, keys_interface: self.keysInterface, fee_estimator: self.feeEstimator, chain_monitor: self.chainMonitor!, net_graph: graph, tx_broadcaster: self.txBroadcaster, logger: self.logger)
209+
self.constructor?.chain_sync_completed(persister: TestChannelManagerPersister(master: self), scorer: nil)
203210
self.channelManager = self.constructor!.channelManager
204211
self.peerManager = self.constructor!.peerManager
205212
self.pendingManagerEvents.append(contentsOf: original.pendingManagerEvents)
@@ -286,7 +293,7 @@ public class HumanObjectPeerTestInstance {
286293

287294
let config = UserConfig()
288295
let theirNodeId = peer2.channelManager.get_our_node_id()
289-
let channelOpenResult = peer1.channelManager.create_channel(their_network_key: theirNodeId, channel_value_satoshis: 4000000, push_msat: 2000000, user_id: 42, override_config: config)
296+
let channelOpenResult = peer1.channelManager.create_channel(their_network_key: theirNodeId, channel_value_satoshis: 4000000, push_msat: 2000000, user_channel_id: 42, override_config: config)
290297

291298
XCTAssertTrue(channelOpenResult.isOk())
292299
let channels = peer1.channelManager.list_channels()

xcode/DirectBindingsApp/DirectBindingsAppTests/test-batteries/TestLogger.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77

88
class TestLogger: Logger {
99

10-
override func log(record: String?) {
11-
print("record: \(record)")
10+
override func log(record: Record) {
11+
print("some abstract log thing")
1212
}
1313

1414
}

0 commit comments

Comments
 (0)