From a9cc69743d0200bc638a4778725f6a1f243c487d Mon Sep 17 00:00:00 2001 From: Erdem Yerebasmaz Date: Thu, 23 May 2024 17:59:01 +0300 Subject: [PATCH] Expose `sync` through Dart bindings (#221) Reformat build_other.dart --- .../include/breez_liquid_sdk.h | 4 ++ .../langs/flutter/scripts/build_other.dart | 3 +- lib/core/src/bindings.rs | 4 ++ lib/core/src/frb/bridge.io.rs | 8 ++++ lib/core/src/frb/bridge.rs | 38 ++++++++++++++++++- packages/dart/lib/src/bindings.dart | 3 ++ packages/dart/lib/src/frb_generated.dart | 29 +++++++++++++- packages/dart/lib/src/frb_generated.io.dart | 16 ++++++++ ...utter_breez_liquid_bindings_generated.dart | 17 +++++++++ 9 files changed, 119 insertions(+), 3 deletions(-) diff --git a/lib/bindings/langs/flutter/breez_liquid_sdk/include/breez_liquid_sdk.h b/lib/bindings/langs/flutter/breez_liquid_sdk/include/breez_liquid_sdk.h index 3a02e20..d10f468 100644 --- a/lib/bindings/langs/flutter/breez_liquid_sdk/include/breez_liquid_sdk.h +++ b/lib/bindings/langs/flutter/breez_liquid_sdk/include/breez_liquid_sdk.h @@ -166,6 +166,9 @@ void frbgen_breez_liquid_wire__crate__bindings__BindingLiquidSdk_send_payment(in uintptr_t that, struct wire_cst_prepare_send_response *req); +void frbgen_breez_liquid_wire__crate__bindings__BindingLiquidSdk_sync(int64_t port_, + uintptr_t that); + void frbgen_breez_liquid_wire__crate__bindings__connect(int64_t port_, struct wire_cst_connect_request *req); @@ -214,6 +217,7 @@ static int64_t dummy_method_to_enforce_bundling(void) { dummy_var ^= ((int64_t) (void*) frbgen_breez_liquid_wire__crate__bindings__BindingLiquidSdk_receive_payment); dummy_var ^= ((int64_t) (void*) frbgen_breez_liquid_wire__crate__bindings__BindingLiquidSdk_restore); dummy_var ^= ((int64_t) (void*) frbgen_breez_liquid_wire__crate__bindings__BindingLiquidSdk_send_payment); + dummy_var ^= ((int64_t) (void*) frbgen_breez_liquid_wire__crate__bindings__BindingLiquidSdk_sync); dummy_var ^= ((int64_t) (void*) frbgen_breez_liquid_wire__crate__bindings__connect); dummy_var ^= ((int64_t) (void*) store_dart_post_cobject); return dummy_var; diff --git a/lib/bindings/langs/flutter/scripts/build_other.dart b/lib/bindings/langs/flutter/scripts/build_other.dart index a6241b2..2f4dc83 100755 --- a/lib/bindings/langs/flutter/scripts/build_other.dart +++ b/lib/bindings/langs/flutter/scripts/build_other.dart @@ -87,6 +87,7 @@ enum Targets { return values.firstWhere((target) => target.triple == host); } - String get compiler => isWindows ? 'cargo xwin build --package breez-liquid-sdk' : 'cargo zigbuild --package breez-liquid-sdk'; + String get compiler => + isWindows ? 'cargo xwin build --package breez-liquid-sdk' : 'cargo zigbuild --package breez-liquid-sdk'; String get libName => isWindows ? windowsLibName : linuxLibName; } diff --git a/lib/core/src/bindings.rs b/lib/core/src/bindings.rs index 0c344dc..9c7a8e0 100644 --- a/lib/core/src/bindings.rs +++ b/lib/core/src/bindings.rs @@ -48,6 +48,10 @@ impl BindingLiquidSdk { self.sdk.list_payments() } + pub fn sync(&self) -> Result<(), LiquidSdkError> { + self.sdk.sync().map_err(Into::into) + } + pub fn backup(&self) -> Result<(), LiquidSdkError> { self.sdk.backup().map_err(Into::into) } diff --git a/lib/core/src/frb/bridge.io.rs b/lib/core/src/frb/bridge.io.rs index e3b4c65..51fecfd 100644 --- a/lib/core/src/frb/bridge.io.rs +++ b/lib/core/src/frb/bridge.io.rs @@ -528,6 +528,14 @@ pub extern "C" fn frbgen_breez_liquid_wire__crate__bindings__BindingLiquidSdk_se wire__crate__bindings__BindingLiquidSdk_send_payment_impl(port_, that, req) } +#[no_mangle] +pub extern "C" fn frbgen_breez_liquid_wire__crate__bindings__BindingLiquidSdk_sync( + port_: i64, + that: usize, +) { + wire__crate__bindings__BindingLiquidSdk_sync_impl(port_, that) +} + #[no_mangle] pub extern "C" fn frbgen_breez_liquid_wire__crate__bindings__connect( port_: i64, diff --git a/lib/core/src/frb/bridge.rs b/lib/core/src/frb/bridge.rs index 0cb384d..d390fa3 100644 --- a/lib/core/src/frb/bridge.rs +++ b/lib/core/src/frb/bridge.rs @@ -33,7 +33,7 @@ flutter_rust_bridge::frb_generated_boilerplate!( default_rust_auto_opaque = RustAutoOpaqueNom, ); pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_VERSION: &str = "2.0.0-dev.35"; -pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = -913565329; +pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = 2052012510; // Section: executor @@ -341,6 +341,42 @@ fn wire__crate__bindings__BindingLiquidSdk_send_payment_impl( }, ) } +fn wire__crate__bindings__BindingLiquidSdk_sync_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + that: impl CstDecode< + RustOpaqueNom>, + >, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "BindingLiquidSdk_sync", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let api_that = that.cst_decode(); + move |context| { + transform_result_dco((move || { + let mut api_that_decoded = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::rust_auto_opaque_decode_compute_order( + vec![api_that.rust_auto_opaque_lock_order_info(0, false)], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_decoded = Some(api_that.rust_auto_opaque_decode_sync_ref()) + } + _ => unreachable!(), + } + } + let api_that = api_that_decoded.unwrap(); + crate::bindings::BindingLiquidSdk::sync(&api_that) + })()) + } + }, + ) +} fn wire__crate__bindings__connect_impl( port_: flutter_rust_bridge::for_generated::MessagePort, req: impl CstDecode, diff --git a/packages/dart/lib/src/bindings.dart b/packages/dart/lib/src/bindings.dart index 688bf8f..de6c814 100644 --- a/packages/dart/lib/src/bindings.dart +++ b/packages/dart/lib/src/bindings.dart @@ -49,4 +49,7 @@ class BindingLiquidSdk extends RustOpaque { Future sendPayment({required PrepareSendResponse req, dynamic hint}) => RustLib.instance.api.crateBindingsBindingLiquidSdkSendPayment(that: this, req: req, hint: hint); + + Future sync({dynamic hint}) => + RustLib.instance.api.crateBindingsBindingLiquidSdkSync(that: this, hint: hint); } diff --git a/packages/dart/lib/src/frb_generated.dart b/packages/dart/lib/src/frb_generated.dart index 82416e5..fffbac9 100644 --- a/packages/dart/lib/src/frb_generated.dart +++ b/packages/dart/lib/src/frb_generated.dart @@ -53,7 +53,7 @@ class RustLib extends BaseEntrypoint { String get codegenVersion => '2.0.0-dev.35'; @override - int get rustContentHash => -913565329; + int get rustContentHash => 2052012510; static const kDefaultExternalLibraryLoaderConfig = ExternalLibraryLoaderConfig( stem: 'breez_liquid_sdk', @@ -86,6 +86,8 @@ abstract class RustLibApi extends BaseApi { Future crateBindingsBindingLiquidSdkSendPayment( {required BindingLiquidSdk that, required PrepareSendResponse req, dynamic hint}); + Future crateBindingsBindingLiquidSdkSync({required BindingLiquidSdk that, dynamic hint}); + Future crateBindingsConnect({required ConnectRequest req, dynamic hint}); RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_BindingLiquidSdk; @@ -316,6 +318,31 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { argNames: ["that", "req"], ); + @override + Future crateBindingsBindingLiquidSdkSync({required BindingLiquidSdk that, dynamic hint}) { + return handler.executeNormal(NormalTask( + callFfi: (port_) { + var arg0 = + cst_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBindingLiquidSdk( + that); + return wire.wire__crate__bindings__BindingLiquidSdk_sync(port_, arg0); + }, + codec: DcoCodec( + decodeSuccessData: dco_decode_unit, + decodeErrorData: dco_decode_liquid_sdk_error, + ), + constMeta: kCrateBindingsBindingLiquidSdkSyncConstMeta, + argValues: [that], + apiImpl: this, + hint: hint, + )); + } + + TaskConstMeta get kCrateBindingsBindingLiquidSdkSyncConstMeta => const TaskConstMeta( + debugName: "BindingLiquidSdk_sync", + argNames: ["that"], + ); + @override Future crateBindingsConnect({required ConnectRequest req, dynamic hint}) { return handler.executeNormal(NormalTask( diff --git a/packages/dart/lib/src/frb_generated.io.dart b/packages/dart/lib/src/frb_generated.io.dart index 3276572..ef0d650 100644 --- a/packages/dart/lib/src/frb_generated.io.dart +++ b/packages/dart/lib/src/frb_generated.io.dart @@ -918,6 +918,22 @@ class RustLibWire implements BaseWire { _wire__crate__bindings__BindingLiquidSdk_send_paymentPtr .asFunction)>(); + void wire__crate__bindings__BindingLiquidSdk_sync( + int port_, + int that, + ) { + return _wire__crate__bindings__BindingLiquidSdk_sync( + port_, + that, + ); + } + + late final _wire__crate__bindings__BindingLiquidSdk_syncPtr = + _lookup>( + 'frbgen_breez_liquid_wire__crate__bindings__BindingLiquidSdk_sync'); + late final _wire__crate__bindings__BindingLiquidSdk_sync = + _wire__crate__bindings__BindingLiquidSdk_syncPtr.asFunction(); + void wire__crate__bindings__connect( int port_, ffi.Pointer req, diff --git a/packages/flutter/lib/flutter_breez_liquid_bindings_generated.dart b/packages/flutter/lib/flutter_breez_liquid_bindings_generated.dart index 5e3139e..079df93 100644 --- a/packages/flutter/lib/flutter_breez_liquid_bindings_generated.dart +++ b/packages/flutter/lib/flutter_breez_liquid_bindings_generated.dart @@ -192,6 +192,23 @@ class FlutterBreezLiquidBindings { _frbgen_breez_liquid_wire__crate__bindings__BindingLiquidSdk_send_paymentPtr .asFunction)>(); + void frbgen_breez_liquid_wire__crate__bindings__BindingLiquidSdk_sync( + int port_, + int that, + ) { + return _frbgen_breez_liquid_wire__crate__bindings__BindingLiquidSdk_sync( + port_, + that, + ); + } + + late final _frbgen_breez_liquid_wire__crate__bindings__BindingLiquidSdk_syncPtr = + _lookup>( + 'frbgen_breez_liquid_wire__crate__bindings__BindingLiquidSdk_sync'); + late final _frbgen_breez_liquid_wire__crate__bindings__BindingLiquidSdk_sync = + _frbgen_breez_liquid_wire__crate__bindings__BindingLiquidSdk_syncPtr + .asFunction(); + void frbgen_breez_liquid_wire__crate__bindings__connect( int port_, ffi.Pointer req,