Skip to content

Commit 074035e

Browse files
committed
update docs for new natively implemented default wrappers
1 parent f111f1b commit 074035e

File tree

2 files changed

+34
-29
lines changed

2 files changed

+34
-29
lines changed

bindings/batteries/ChannelManagerConstructor.swift

+31-26
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ enum InvalidSerializedDataError: Error {
1515
public class ChannelManagerConstructor {
1616

1717
public let channelManager: ChannelManager
18-
18+
1919
/**
2020
* The latest block has the channel manager saw. If this is non-null it is a 32-byte block hash.
2121
* You should sync the blockchain starting with the block that builds on this block.
2222
*/
2323
public let channel_manager_latest_block_hash: [UInt8]?
24-
24+
2525
/**
2626
* A list of ChannelMonitors and the last block they each saw. You should sync the blockchain on each individually
2727
* starting with the block that builds on the hash given.
@@ -46,8 +46,10 @@ public class ChannelManagerConstructor {
4646
var b: LDKChannelMonitor = value.result!.pointee.b
4747
b.is_owned = false
4848
let currentChannelMonitor = ChannelMonitor(pointer: b)
49-
monitors.append(b)
50-
self.channel_monitors.append((currentChannelMonitor, Bindings.LDKThirtyTwoBytes_to_array(nativeType: a)))
49+
var clonedChannelMonitor = currentChannelMonitor.clone(orig: currentChannelMonitor)
50+
clonedChannelMonitor.cOpaqueStruct?.is_owned = false
51+
monitors.append(clonedChannelMonitor.cOpaqueStruct!)
52+
self.channel_monitors.append((clonedChannelMonitor, Bindings.LDKThirtyTwoBytes_to_array(nativeType: a)))
5153
}
5254

5355
let res = UtilMethods.constructor_BlockHashChannelManagerZ_read(ser: channel_manager_serialized, arg_keys_manager: keys_interface, arg_fee_estimator: fee_estimator, arg_chain_monitor: chain_monitor.as_Watch(), arg_tx_broadcaster: tx_broadcaster, arg_logger: logger, arg_default_config: UserConfig(), arg_channel_monitors: monitors)
@@ -80,10 +82,10 @@ public class ChannelManagerConstructor {
8082
let chainParameters = ChainParameters(network_arg: network, best_block_arg: block)
8183
self.channelManager = ChannelManager(fee_est: fee_estimator, chain_monitor: chain_monitor.as_Watch(), tx_broadcaster: tx_broadcaster, logger: logger, keys_manager: keys_interface, config: config, params: chainParameters)
8284
}
83-
85+
8486
var persisterWorkItem: DispatchWorkItem?
8587
var shutdown = false
86-
88+
8789
/**
8890
* Utility which adds all of the deserialized ChannelMonitors to the chain watch so that further updates from the
8991
* ChannelManager are processed as normal.
@@ -95,65 +97,68 @@ public class ChannelManagerConstructor {
9597
if self.persisterWorkItem != nil {
9698
return
9799
}
98-
100+
99101
for (currentChannelMonitor, _) in self.channel_monitors {
100102
let chainMonitorWatch = self.chain_monitor.as_Watch()
101-
let fundingTxo = currentChannelMonitor.get_funding_txo()
103+
let monitorClone = currentChannelMonitor.clone(orig: currentChannelMonitor)
104+
let fundingTxo = monitorClone.get_funding_txo()
102105
let outPoint = OutPoint(pointer: fundingTxo.cOpaqueStruct!.a)
103-
104-
chainMonitorWatch.cOpaqueStruct!.watch_channel(chainMonitorWatch.cOpaqueStruct!.this_arg, outPoint.cOpaqueStruct!, currentChannelMonitor.cOpaqueStruct!)
105-
// chainMonitorWatch.watch_channel(funding_txo: outPoint, monitor: currentChannelMonitor)
106+
107+
let monitorWatchResult = chainMonitorWatch.watch_channel(funding_txo: outPoint, monitor: monitorClone)
108+
if !monitorWatchResult.isOk() {
109+
print("Some error occurred with a chainMonitorWatch.watch_channel call")
110+
}
106111
}
107-
112+
108113
self.persisterWorkItem = DispatchWorkItem {
109114
var lastTimerTick = NSDate().timeIntervalSince1970
110115
while !self.shutdown {
111116
var needsPersist = self.channelManager.await_persistable_update_timeout(max_wait: 1)
112-
113-
let nativeManagerEventsProvider = self.channelManager.as_EventsProvider().cOpaqueStruct!
114-
let rawManagerEvents = Bindings.LDKCVec_EventZ_to_array(nativeType: nativeManagerEventsProvider.get_and_clear_pending_events(nativeManagerEventsProvider.this_arg))
115-
117+
118+
let managerEventsProvider = self.channelManager.as_EventsProvider()
119+
let rawManagerEvents = managerEventsProvider.get_and_clear_pending_events()
120+
116121
let managerEvents = rawManagerEvents.map { (e: LDKEvent) -> Event in
117122
Event(pointer: e)
118123
}
119124
if managerEvents.count != 0 {
120125
persister.handle_events(events: managerEvents)
121126
needsPersist = true
122127
}
123-
124-
let nativeMonitorEventsProvider = self.chain_monitor.as_EventsProvider().cOpaqueStruct!
125-
let rawMonitorEvents = Bindings.LDKCVec_EventZ_to_array(nativeType: nativeMonitorEventsProvider.get_and_clear_pending_events(nativeMonitorEventsProvider.this_arg))
126-
128+
129+
let monitorEventsProvider = self.chain_monitor.as_EventsProvider()
130+
let rawMonitorEvents = monitorEventsProvider.get_and_clear_pending_events()
131+
127132
let monitorEvents = rawMonitorEvents.map { (e: LDKEvent) -> Event in
128133
Event(pointer: e)
129134
}
130135
if monitorEvents.count != 0 {
131136
persister.handle_events(events: monitorEvents)
132137
needsPersist = true
133138
}
134-
139+
135140
if needsPersist {
136141
persister.persist_manager(channel_manager_bytes: self.channelManager.write(obj: self.channelManager))
137142
}
138-
143+
139144
if self.shutdown {
140145
return
141146
}
142-
147+
143148
let currentTimerTick = NSDate().timeIntervalSince1970
144149
if lastTimerTick < (currentTimerTick-60) { // more than 60 seconds have passed since the last timer tick
145150
self.channelManager.timer_tick_occurred()
146151
lastTimerTick = currentTimerTick
147152
}
148-
153+
149154
Thread.sleep(forTimeInterval: 1) // this should hopefully not suspend the main application
150155
}
151156
}
152-
157+
153158
let backgroundQueue = DispatchQueue(label: "org.ldk.ChannelManagerConstructor.persisterThread", qos: .background)
154159
backgroundQueue.async(execute: self.persisterWorkItem!)
155160
}
156-
161+
157162
public func interrupt() {
158163
self.shutdown = true
159164
if let workItem = self.persisterWorkItem {

docs/setup.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ class MyPersister: Persist {
119119
// persist monitorBytes to disk, keyed by idBytes
120120

121121
// simplified result instantiation calls coming shortly!
122-
return Result_NoneChannelMonitorUpdateErrZ(pointer: LDKCResult_NoneChannelMonitorUpdateErrZ())
122+
return Result_NoneChannelMonitorUpdateErrZ()
123123
}
124124

125125
override func update_persisted_channel(id: OutPoint, update: ChannelMonitorUpdate, data: ChannelMonitor) -> Result_NoneChannelMonitorUpdateErrZ {
@@ -129,7 +129,7 @@ class MyPersister: Persist {
129129
// modify persisted monitorBytes keyed by idBytes on disk
130130

131131
// simplified result instantiation calls coming shortly!
132-
return Result_NoneChannelMonitorUpdateErrZ(pointer: LDKCResult_NoneChannelMonitorUpdateErrZ())
132+
return Result_NoneChannelMonitorUpdateErrZ()
133133
}
134134

135135
}
@@ -212,7 +212,7 @@ pass its node secret to the peer manager initialization, so let's prepare it rig
212212

213213
```swift
214214
let keysInterface = keysManager.as_KeysInterface()
215-
let nodeSecret = Bindings.LDKSecretKey_to_array(nativeType: keysInterface.cOpaqueStruct!.get_node_secret(keysInterface.cOpaqueStruct!.this_arg))
215+
let nodeSecret = self.keysInterface.get_node_secret()
216216
```
217217

218218
This is a bit inelegant, but we will be providing simpler casting methods for user-provided types shortly.

0 commit comments

Comments
 (0)