@@ -42,10 +42,11 @@ public struct ChannelManagerConstructionParameters {
42
42
public var txBroadcaster : BroadcasterInterface
43
43
public var enableP2PGossip : Bool = false
44
44
public var scorer : MultiThreadedLockableScore ?
45
+ public var scoreParams : ProbabilisticScoringFeeParameters ?
45
46
public var payerRetries : Retry = Retry . initWithAttempts ( a: UInt ( 3 ) )
46
47
public var logger : Logger
47
48
48
- public init ( config: UserConfig , entropySource: EntropySource , nodeSigner: NodeSigner , signerProvider: SignerProvider , feeEstimator: FeeEstimator , chainMonitor: ChainMonitor , txBroadcaster: BroadcasterInterface , logger: Logger , enableP2PGossip: Bool = false , scorer: MultiThreadedLockableScore ? = nil , payerRetries: Retry = Retry . initWithAttempts ( a: UInt ( 3 ) ) ) {
49
+ public init ( config: UserConfig , entropySource: EntropySource , nodeSigner: NodeSigner , signerProvider: SignerProvider , feeEstimator: FeeEstimator , chainMonitor: ChainMonitor , txBroadcaster: BroadcasterInterface , logger: Logger , enableP2PGossip: Bool = false , scorer: MultiThreadedLockableScore ? = nil , scoreParams : ProbabilisticScoringFeeParameters ? = nil , payerRetries: Retry = Retry . initWithAttempts ( a: UInt ( 3 ) ) ) {
49
50
self . config = config
50
51
self . entropySource = entropySource
51
52
self . nodeSigner = nodeSigner
@@ -57,6 +58,11 @@ public struct ChannelManagerConstructionParameters {
57
58
58
59
self . enableP2PGossip = enableP2PGossip
59
60
self . scorer = scorer
61
+ if scorer != nil && scoreParams == nil {
62
+ self . scoreParams = ProbabilisticScoringFeeParameters . initWithDefault ( )
63
+ } else {
64
+ self . scoreParams = scoreParams
65
+ }
60
66
self . payerRetries = payerRetries
61
67
}
62
68
@@ -74,8 +80,8 @@ public struct ChannelManagerConstructionParameters {
74
80
}
75
81
76
82
fileprivate func router( networkGraph: NetworkGraph ? ) -> Router {
77
- if let netGraph = networkGraph, let scorer = self . scorer {
78
- return DefaultRouter ( networkGraph: netGraph, logger: self . logger, randomSeedBytes: self . entropySource. getSecureRandomBytes ( ) , scorer: scorer. asLockableScore ( ) ) . asRouter ( )
83
+ if let netGraph = networkGraph, let scorer = self . scorer, let scoreParams = self . scoreParams {
84
+ return DefaultRouter ( networkGraph: netGraph, logger: self . logger, randomSeedBytes: self . entropySource. getSecureRandomBytes ( ) , scorer: scorer. asLockableScore ( ) , scoreParams : scoreParams ) . asRouter ( )
79
85
}
80
86
return CMCRouter ( )
81
87
}
@@ -180,17 +186,21 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
180
186
let random_data = params. entropySource. getSecureRandomBytes ( ) ;
181
187
182
188
183
- let noCustomMessages = IgnoringMessageHandler ( )
189
+ let channelMessageHandler = channelManager. asChannelMessageHandler ( )
190
+ let noCustomMessages = IgnoringMessageHandler ( ) . asCustomMessageHandler ( )
191
+ let noOnionMessages = IgnoringMessageHandler ( ) . asOnionMessageHandler ( )
192
+ let noRoutingMessages = IgnoringMessageHandler ( ) . asRoutingMessageHandler ( )
193
+
184
194
var messageHandler : MessageHandler !
185
195
if let netGraph = self . netGraph, params. enableP2PGossip {
186
196
let p2pGossipSync = P2PGossipSync ( networkGraph: netGraph, utxoLookup: nil , logger: params. logger)
187
197
self . graphMessageHandler = GossipSync . initWithP2P ( a: p2pGossipSync)
188
- messageHandler = MessageHandler ( chanHandlerArg: channelManager . asChannelMessageHandler ( ) , routeHandlerArg: p2pGossipSync. asRoutingMessageHandler ( ) , onionMessageHandlerArg: noCustomMessages. asOnionMessageHandler ( ) )
198
+ messageHandler = MessageHandler ( chanHandlerArg: channelMessageHandler , routeHandlerArg: p2pGossipSync. asRoutingMessageHandler ( ) , onionMessageHandlerArg: noOnionMessages , customMessageHandlerArg : noCustomMessages)
189
199
} else {
190
- messageHandler = MessageHandler ( chanHandlerArg: channelManager . asChannelMessageHandler ( ) , routeHandlerArg: noCustomMessages . asRoutingMessageHandler ( ) , onionMessageHandlerArg: noCustomMessages. asOnionMessageHandler ( ) )
200
+ messageHandler = MessageHandler ( chanHandlerArg: channelMessageHandler , routeHandlerArg: noRoutingMessages , onionMessageHandlerArg: noOnionMessages , customMessageHandlerArg : noCustomMessages)
191
201
}
192
202
let timestampSeconds = UInt32 ( NSDate ( ) . timeIntervalSince1970)
193
- self . peerManager = PeerManager ( messageHandler: messageHandler, currentTime: timestampSeconds, ephemeralRandomData: random_data, logger: params. logger, customMessageHandler : IgnoringMessageHandler ( ) . asCustomMessageHandler ( ) , nodeSigner: params. nodeSigner)
203
+ self . peerManager = PeerManager ( messageHandler: messageHandler, currentTime: timestampSeconds, ephemeralRandomData: random_data, logger: params. logger, nodeSigner: params. nodeSigner)
194
204
195
205
if let filter = filter {
196
206
for (currentMonitor, _) in self . channel_monitors {
@@ -220,22 +230,26 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
220
230
221
231
self . netGraph = netGraph
222
232
let router = params. router ( networkGraph: self . netGraph)
223
- self . channelManager = ChannelManager ( feeEst: params. feeEstimator, chainMonitor: params. chainMonitor. asWatch ( ) , txBroadcaster: params. txBroadcaster, router: router, logger: params. logger, entropySource: params. entropySource, nodeSigner: params. nodeSigner, signerProvider: params. signerProvider, config: params. config, params: chainParameters)
233
+ let timestampSeconds = UInt32 ( NSDate ( ) . timeIntervalSince1970)
234
+ self . channelManager = ChannelManager ( feeEst: params. feeEstimator, chainMonitor: params. chainMonitor. asWatch ( ) , txBroadcaster: params. txBroadcaster, router: router, logger: params. logger, entropySource: params. entropySource, nodeSigner: params. nodeSigner, signerProvider: params. signerProvider, config: params. config, params: chainParameters, currentTimestamp: timestampSeconds)
224
235
225
- let noCustomMessages = IgnoringMessageHandler ( )
236
+ let channelMessageHandler = channelManager. asChannelMessageHandler ( )
237
+ let noCustomMessages = IgnoringMessageHandler ( ) . asCustomMessageHandler ( )
238
+ let noOnionMessages = IgnoringMessageHandler ( ) . asOnionMessageHandler ( )
239
+ let noRoutingMessages = IgnoringMessageHandler ( ) . asRoutingMessageHandler ( )
240
+
226
241
var messageHandler : MessageHandler !
227
242
if let netGraph = netGraph, params. enableP2PGossip {
228
243
let p2pGossipSync = P2PGossipSync ( networkGraph: netGraph, utxoLookup: nil , logger: params. logger)
229
244
self . graphMessageHandler = GossipSync . initWithP2P ( a: p2pGossipSync)
230
- messageHandler = MessageHandler ( chanHandlerArg: channelManager . asChannelMessageHandler ( ) , routeHandlerArg: p2pGossipSync. asRoutingMessageHandler ( ) , onionMessageHandlerArg: noCustomMessages. asOnionMessageHandler ( ) )
245
+ messageHandler = MessageHandler ( chanHandlerArg: channelMessageHandler , routeHandlerArg: p2pGossipSync. asRoutingMessageHandler ( ) , onionMessageHandlerArg: noOnionMessages , customMessageHandlerArg : noCustomMessages)
231
246
} else {
232
- messageHandler = MessageHandler ( chanHandlerArg: channelManager . asChannelMessageHandler ( ) , routeHandlerArg: noCustomMessages . asRoutingMessageHandler ( ) , onionMessageHandlerArg: noCustomMessages. asOnionMessageHandler ( ) )
247
+ messageHandler = MessageHandler ( chanHandlerArg: channelMessageHandler , routeHandlerArg: noRoutingMessages , onionMessageHandlerArg: noOnionMessages , customMessageHandlerArg : noCustomMessages)
233
248
}
234
249
235
250
let random_data = params. entropySource. getSecureRandomBytes ( ) ;
236
251
237
- let timestampSeconds = UInt32 ( NSDate ( ) . timeIntervalSince1970)
238
- self . peerManager = PeerManager ( messageHandler: messageHandler, currentTime: timestampSeconds, ephemeralRandomData: random_data, logger: params. logger, customMessageHandler: noCustomMessages. asCustomMessageHandler ( ) , nodeSigner: params. nodeSigner)
252
+ self . peerManager = PeerManager ( messageHandler: messageHandler, currentTime: timestampSeconds, ephemeralRandomData: random_data, logger: params. logger, nodeSigner: params. nodeSigner)
239
253
240
254
super. init ( conflictAvoidingVariableName: 0 , instantiationContext: " ChannelManagerConstructor.swift:: \( #function) : \( #line) " )
241
255
// try! self.peerManager.addAnchor(anchor: self)
0 commit comments