@@ -23,6 +23,11 @@ enum RouterUnavailableError: Error {
23
23
case channelManagerInitializationMissingScorerOrNetworkGraph
24
24
}
25
25
26
+ public enum NetworkGraphArgument {
27
+ case serialized( [ UInt8 ] )
28
+ case instance( NetworkGraph )
29
+ }
30
+
26
31
public struct ChannelManagerConstructionParameters {
27
32
public var config : UserConfig
28
33
public var entropySource : EntropySource
@@ -109,7 +114,7 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
109
114
public private( set) var channel_monitors : [ ( ChannelMonitor , [ UInt8 ] ) ]
110
115
111
116
112
- public init ( channelManagerSerialized: [ UInt8 ] , channelMonitorsSerialized: [ [ UInt8 ] ] , netGraphSerialized : [ UInt8 ] ? , filter: Filter ? , params: ChannelManagerConstructionParameters ) throws {
117
+ public init ( channelManagerSerialized: [ UInt8 ] , channelMonitorsSerialized: [ [ UInt8 ] ] , networkGraph : NetworkGraphArgument ? , filter: Filter ? , params: ChannelManagerConstructionParameters ) throws {
113
118
114
119
self . constructionParameters = params
115
120
@@ -141,12 +146,18 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
141
146
142
147
print ( " Collected channel monitors, reading channel manager " )
143
148
144
- if let serializedNetworkGraph = netGraphSerialized {
145
- let netGraphResult = NetworkGraph . read ( ser: serializedNetworkGraph, arg: params. logger)
146
- if !netGraphResult. isOk ( ) {
147
- throw InvalidSerializedDataError . invalidSerializedNetworkGraph
149
+ if let netGraph = networkGraph {
150
+ switch netGraph {
151
+ case . instance( let graph) :
152
+ self . netGraph = graph
153
+ case . serialized( let serializedNetworkGraph) :
154
+ let netGraphResult = NetworkGraph . read ( ser: serializedNetworkGraph, arg: params. logger)
155
+ if !netGraphResult. isOk ( ) {
156
+ throw InvalidSerializedDataError . invalidSerializedNetworkGraph
157
+ }
158
+ self . netGraph = netGraphResult. getValue ( )
148
159
}
149
- self . netGraph = netGraphResult . getValue ( )
160
+
150
161
}
151
162
152
163
// TODO: figure out better way to obtain a router
@@ -170,7 +181,7 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
170
181
171
182
let noCustomMessages = IgnoringMessageHandler ( )
172
183
var messageHandler : MessageHandler !
173
- if let netGraph = netGraph, params. enableP2PGossip {
184
+ if let netGraph = self . netGraph, params. enableP2PGossip {
174
185
let p2pGossipSync = P2PGossipSync ( networkGraph: netGraph, utxoLookup: nil , logger: params. logger)
175
186
self . graphMessageHandler = GossipSync . initWithP2P ( a: p2pGossipSync)
176
187
messageHandler = MessageHandler ( chanHandlerArg: channelManager. asChannelMessageHandler ( ) , routeHandlerArg: p2pGossipSync. asRoutingMessageHandler ( ) , onionMessageHandlerArg: noCustomMessages. asOnionMessageHandler ( ) )
0 commit comments