From 99b31aef22d5573855a7bb89db2b74930563fe91 Mon Sep 17 00:00:00 2001 From: Elias Rohrer Date: Mon, 5 Feb 2024 12:27:19 +0100 Subject: [PATCH] Introduce `default_config` function .. this allows us the retrieve a `Config` prepopulated with default values in bindings (where `Default::default()` isn't available), even if it includes complex structures for which we can't set default values in the UDL file. --- .../lightningdevkit/ldknode/AndroidLibTest.kt | 4 ++-- .../lightningdevkit/ldknode/LibraryTest.kt | 4 ++-- bindings/ldk_node.udl | 23 ++++++++++--------- bindings/python/src/ldk_node/test_ldk_node.py | 2 +- src/lib.rs | 10 ++++++++ 5 files changed, 27 insertions(+), 16 deletions(-) diff --git a/bindings/kotlin/ldk-node-android/lib/src/androidTest/kotlin/org/lightningdevkit/ldknode/AndroidLibTest.kt b/bindings/kotlin/ldk-node-android/lib/src/androidTest/kotlin/org/lightningdevkit/ldknode/AndroidLibTest.kt index b0bb0d89b..a5ca6eac0 100644 --- a/bindings/kotlin/ldk-node-android/lib/src/androidTest/kotlin/org/lightningdevkit/ldknode/AndroidLibTest.kt +++ b/bindings/kotlin/ldk-node-android/lib/src/androidTest/kotlin/org/lightningdevkit/ldknode/AndroidLibTest.kt @@ -24,13 +24,13 @@ class AndroidLibTest { val listenAddress1 = "127.0.0.1:2323" val listenAddress2 = "127.0.0.1:2324" - val config1 = Config() + val config1 = defaultConfig() config1.storageDirPath = tmpDir1 config1.listeningAddresses = listOf(listenAddress1) config1.network = Network.REGTEST config1.logLevel = LogLevel.TRACE - val config2 = Config() + val config2 = defaultConfig() config2.storageDirPath = tmpDir2 config2.listeningAddresses = listOf(listenAddress2) config2.network = Network.REGTEST diff --git a/bindings/kotlin/ldk-node-jvm/lib/src/test/kotlin/org/lightningdevkit/ldknode/LibraryTest.kt b/bindings/kotlin/ldk-node-jvm/lib/src/test/kotlin/org/lightningdevkit/ldknode/LibraryTest.kt index 7be0464e0..936fa558e 100644 --- a/bindings/kotlin/ldk-node-jvm/lib/src/test/kotlin/org/lightningdevkit/ldknode/LibraryTest.kt +++ b/bindings/kotlin/ldk-node-jvm/lib/src/test/kotlin/org/lightningdevkit/ldknode/LibraryTest.kt @@ -114,7 +114,7 @@ class LibraryTest { val listenAddress1 = "127.0.0.1:2323" val listenAddress2 = "127.0.0.1:2324" - val config1 = Config() + val config1 = defaultConfig() config1.storageDirPath = tmpDir1 config1.listeningAddresses = listOf(listenAddress1) config1.network = Network.REGTEST @@ -122,7 +122,7 @@ class LibraryTest { println("Config 1: $config1") - val config2 = Config() + val config2 = defaultConfig() config2.storageDirPath = tmpDir2 config2.listeningAddresses = listOf(listenAddress2) config2.network = Network.REGTEST diff --git a/bindings/ldk_node.udl b/bindings/ldk_node.udl index fe7cd56c5..c6c7f4f38 100644 --- a/bindings/ldk_node.udl +++ b/bindings/ldk_node.udl @@ -1,19 +1,20 @@ namespace ldk_node { Mnemonic generate_entropy_mnemonic(); + Config default_config(); }; dictionary Config { - string storage_dir_path = "/tmp/ldk_node/"; - string? log_dir_path = null; - Network network = "Bitcoin"; - sequence? listening_addresses = null; - u32 default_cltv_expiry_delta = 144; - u64 onchain_wallet_sync_interval_secs = 80; - u64 wallet_sync_interval_secs = 30; - u64 fee_rate_cache_update_interval_secs = 600; - sequence trusted_peers_0conf = []; - u64 probing_liquidity_limit_multiplier = 3; - LogLevel log_level = "Debug"; + string storage_dir_path; + string? log_dir_path; + Network network; + sequence? listening_addresses; + u32 default_cltv_expiry_delta; + u64 onchain_wallet_sync_interval_secs; + u64 wallet_sync_interval_secs; + u64 fee_rate_cache_update_interval_secs; + sequence trusted_peers_0conf; + u64 probing_liquidity_limit_multiplier; + LogLevel log_level; }; interface Builder { diff --git a/bindings/python/src/ldk_node/test_ldk_node.py b/bindings/python/src/ldk_node/test_ldk_node.py index c25316bf6..7b8ea7239 100644 --- a/bindings/python/src/ldk_node/test_ldk_node.py +++ b/bindings/python/src/ldk_node/test_ldk_node.py @@ -81,7 +81,7 @@ def send_to_address(address, amount_sats): def setup_node(tmp_dir, esplora_endpoint, listening_addresses): - config = Config() + config = default_config() builder = Builder.from_config(config) builder.set_storage_dir_path(tmp_dir) builder.set_esplora_server(esplora_endpoint) diff --git a/src/lib.rs b/src/lib.rs index 8a11833cb..cc1c05cac 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -278,6 +278,16 @@ impl Default for Config { } } +/// Returns a [`Config`] object populated with default values. +/// +/// See the documentation of [`Config`] for more information on the used defaults. +/// +/// This is mostly meant for use in bindings, in Rust this is synonymous with +/// [`Config::default()`]. +pub fn default_config() -> Config { + Config::default() +} + /// The main interface object of LDK Node, wrapping the necessary LDK and BDK functionalities. /// /// Needs to be initialized and instantiated through [`Builder::build`].