@@ -27,7 +27,10 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
27
27
28
28
let logger : Logger
29
29
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 ?
31
34
public let peerManager : PeerManager
32
35
33
36
@@ -42,7 +45,7 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
42
45
private let chain_monitor : ChainMonitor
43
46
44
47
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 {
46
49
47
50
var monitors : [ LDKChannelMonitor ] = [ ]
48
51
self . channel_monitors = [ ]
@@ -56,9 +59,9 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
56
59
57
60
let value : LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr = channelMonitorResult. cOpaqueStruct!. contents
58
61
let a : LDKThirtyTwoBytes = value. result!. pointee. a
59
- var b : LDKChannelMonitor = value. result!. pointee. b
62
+ let b : LDKChannelMonitor = value. result!. pointee. b
60
63
61
- var clonedChannelMonitor = ChannelMonitor ( pointer: b) . dangle ( ) . clone ( )
64
+ let clonedChannelMonitor = ChannelMonitor ( pointer: b) . dangle ( ) . clone ( )
62
65
// var clonedChannelMonitor = currentChannelMonitor.clone(orig: currentChannelMonitor)
63
66
clonedChannelMonitor. cOpaqueStruct? . is_owned = false // is_owned should never have to be modified
64
67
@@ -87,13 +90,18 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
87
90
self . logger = logger
88
91
89
92
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 ( ) )
93
100
} 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 ( ) )
96
102
}
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 ( ) )
97
105
98
106
if let filter = filter {
99
107
for (currentMonitor, _) in self . channel_monitors {
@@ -112,7 +120,8 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
112
120
/**
113
121
* Constructs a channel manager from the given interface implementations
114
122
*/
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
+
116
125
self . channel_monitors = [ ]
117
126
self . channel_manager_latest_block_hash = nil
118
127
self . chain_monitor = chain_monitor
@@ -122,13 +131,18 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
122
131
self . logger = logger
123
132
124
133
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 ( ) )
128
141
} 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 ( ) )
131
143
}
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
+
132
146
133
147
super. init ( conflictAvoidingVariableName: 0 )
134
148
// try! self.peerManager.addAnchor(anchor: self)
@@ -147,7 +161,7 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
147
161
* This also spawns a background thread which will call the appropriate methods on the provided
148
162
* ChannelManagerPersister as required.
149
163
*/
150
- public func chain_sync_completed( persister: ExtendedChannelManagerPersister ) {
164
+ public func chain_sync_completed( persister: ExtendedChannelManagerPersister , scorer : MultiThreadedLockableScore ? ) {
151
165
152
166
if self . backgroundProcessor != nil {
153
167
return
@@ -169,8 +183,19 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
169
183
170
184
self . customPersister = CustomChannelManagerPersister ( handler: persister)
171
185
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
+
174
199
try ! self . backgroundProcessor!. addAnchor ( anchor: self . peerManager)
175
200
try ! self . backgroundProcessor!. addAnchor ( anchor: persister)
176
201
try ! self . backgroundProcessor!. addAnchor ( anchor: self . customEventHandler!)
0 commit comments