Skip to content

Commit 2ad4d0d

Browse files
committed
Allow passing either serialized or instantiated network graph to channel manager deserializer.
1 parent 7686647 commit 2ad4d0d

File tree

2 files changed

+19
-8
lines changed

2 files changed

+19
-8
lines changed

ci/LDKSwift/Sources/LDKSwift/batteries/ChannelManagerConstructor.swift

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ enum RouterUnavailableError: Error {
2323
case channelManagerInitializationMissingScorerOrNetworkGraph
2424
}
2525

26+
public enum NetworkGraphArgument {
27+
case serialized([UInt8])
28+
case instance(NetworkGraph)
29+
}
30+
2631
public struct ChannelManagerConstructionParameters {
2732
public var config: UserConfig
2833
public var entropySource: EntropySource
@@ -109,7 +114,7 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
109114
public private(set) var channel_monitors: [(ChannelMonitor, [UInt8])]
110115

111116

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 {
113118

114119
self.constructionParameters = params
115120

@@ -141,12 +146,18 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
141146

142147
print("Collected channel monitors, reading channel manager")
143148

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()
148159
}
149-
self.netGraph = netGraphResult.getValue()
160+
150161
}
151162

152163
// TODO: figure out better way to obtain a router
@@ -170,7 +181,7 @@ public class ChannelManagerConstructor: NativeTypeWrapper {
170181

171182
let noCustomMessages = IgnoringMessageHandler()
172183
var messageHandler: MessageHandler!
173-
if let netGraph = netGraph, params.enableP2PGossip {
184+
if let netGraph = self.netGraph, params.enableP2PGossip {
174185
let p2pGossipSync = P2PGossipSync(networkGraph: netGraph, utxoLookup: nil, logger: params.logger)
175186
self.graphMessageHandler = GossipSync.initWithP2P(a: p2pGossipSync)
176187
messageHandler = MessageHandler(chanHandlerArg: channelManager.asChannelMessageHandler(), routeHandlerArg: p2pGossipSync.asRoutingMessageHandler(), onionMessageHandlerArg: noCustomMessages.asOnionMessageHandler())

ci/LDKSwift/Tests/LDKSwiftTests/LDKSwiftTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ class LDKSwiftTests: XCTestCase {
7070
txBroadcaster: broadcaster,
7171
logger: logger
7272
)
73-
let channelManagerConstructor = try ChannelManagerConstructor(channelManagerSerialized: serialized_channel_manager, channelMonitorsSerialized: serializedChannelMonitors, netGraphSerialized: nil, filter: filter, params: constructionParameters)
73+
let channelManagerConstructor = try ChannelManagerConstructor(channelManagerSerialized: serialized_channel_manager, channelMonitorsSerialized: serializedChannelMonitors, networkGraph: nil, filter: filter, params: constructionParameters)
7474

7575
let channelManager = channelManagerConstructor.channelManager;
7676
let cmPersister = TestChannelManagerPersister(channelManager: channelManager)

0 commit comments

Comments
 (0)