Add OnlineWallet::getNetwork

This commit is contained in:
artfuldev 2021-10-15 00:48:48 +05:30
parent 0fc04fc34e
commit 40a4b58757
4 changed files with 38 additions and 17 deletions

View File

@ -44,15 +44,15 @@ open class RustBuffer : Structure() {
companion object { companion object {
internal fun alloc(size: Int = 0) = rustCall() { status -> internal fun alloc(size: Int = 0) = rustCall() { status ->
_UniFFILib.INSTANCE.ffi_bdk_f2ea_rustbuffer_alloc(size, status) _UniFFILib.INSTANCE.ffi_bdk_14a1_rustbuffer_alloc(size, status)
} }
internal fun free(buf: RustBuffer.ByValue) = rustCall() { status -> internal fun free(buf: RustBuffer.ByValue) = rustCall() { status ->
_UniFFILib.INSTANCE.ffi_bdk_f2ea_rustbuffer_free(buf, status) _UniFFILib.INSTANCE.ffi_bdk_14a1_rustbuffer_free(buf, status)
} }
internal fun reserve(buf: RustBuffer.ByValue, additional: Int) = rustCall() { status -> internal fun reserve(buf: RustBuffer.ByValue, additional: Int) = rustCall() { status ->
_UniFFILib.INSTANCE.ffi_bdk_f2ea_rustbuffer_reserve(buf, additional, status) _UniFFILib.INSTANCE.ffi_bdk_14a1_rustbuffer_reserve(buf, additional, status)
} }
} }
@ -451,39 +451,43 @@ internal interface _UniFFILib : Library {
} }
} }
fun ffi_bdk_f2ea_OfflineWallet_object_free(ptr: Pointer, fun ffi_bdk_14a1_OfflineWallet_object_free(ptr: Pointer,
uniffi_out_err: RustCallStatus uniffi_out_err: RustCallStatus
): Unit ): Unit
fun bdk_f2ea_OfflineWallet_new(descriptor: RustBuffer.ByValue,network: RustBuffer.ByValue,database_config: RustBuffer.ByValue, fun bdk_14a1_OfflineWallet_new(descriptor: RustBuffer.ByValue,network: RustBuffer.ByValue,database_config: RustBuffer.ByValue,
uniffi_out_err: RustCallStatus uniffi_out_err: RustCallStatus
): Pointer ): Pointer
fun bdk_f2ea_OfflineWallet_get_new_address(ptr: Pointer, fun bdk_14a1_OfflineWallet_get_new_address(ptr: Pointer,
uniffi_out_err: RustCallStatus uniffi_out_err: RustCallStatus
): RustBuffer.ByValue ): RustBuffer.ByValue
fun ffi_bdk_f2ea_OnlineWallet_object_free(ptr: Pointer, fun ffi_bdk_14a1_OnlineWallet_object_free(ptr: Pointer,
uniffi_out_err: RustCallStatus uniffi_out_err: RustCallStatus
): Unit ): Unit
fun bdk_f2ea_OnlineWallet_new(descriptor: RustBuffer.ByValue,network: RustBuffer.ByValue,database_config: RustBuffer.ByValue,blockchain_config: RustBuffer.ByValue, fun bdk_14a1_OnlineWallet_new(descriptor: RustBuffer.ByValue,network: RustBuffer.ByValue,database_config: RustBuffer.ByValue,blockchain_config: RustBuffer.ByValue,
uniffi_out_err: RustCallStatus uniffi_out_err: RustCallStatus
): Pointer ): Pointer
fun ffi_bdk_f2ea_rustbuffer_alloc(size: Int, fun bdk_14a1_OnlineWallet_get_network(ptr: Pointer,
uniffi_out_err: RustCallStatus uniffi_out_err: RustCallStatus
): RustBuffer.ByValue ): RustBuffer.ByValue
fun ffi_bdk_f2ea_rustbuffer_from_bytes(bytes: ForeignBytes.ByValue, fun ffi_bdk_14a1_rustbuffer_alloc(size: Int,
uniffi_out_err: RustCallStatus uniffi_out_err: RustCallStatus
): RustBuffer.ByValue ): RustBuffer.ByValue
fun ffi_bdk_f2ea_rustbuffer_free(buf: RustBuffer.ByValue, fun ffi_bdk_14a1_rustbuffer_from_bytes(bytes: ForeignBytes.ByValue,
uniffi_out_err: RustCallStatus
): RustBuffer.ByValue
fun ffi_bdk_14a1_rustbuffer_free(buf: RustBuffer.ByValue,
uniffi_out_err: RustCallStatus uniffi_out_err: RustCallStatus
): Unit ): Unit
fun ffi_bdk_f2ea_rustbuffer_reserve(buf: RustBuffer.ByValue,additional: Int, fun ffi_bdk_14a1_rustbuffer_reserve(buf: RustBuffer.ByValue,additional: Int,
uniffi_out_err: RustCallStatus uniffi_out_err: RustCallStatus
): RustBuffer.ByValue ): RustBuffer.ByValue
@ -1117,7 +1121,7 @@ class OfflineWallet(
constructor(descriptor: String, network: Network, databaseConfig: DatabaseConfig ) : constructor(descriptor: String, network: Network, databaseConfig: DatabaseConfig ) :
this( this(
rustCallWithError(BdkException) { status -> rustCallWithError(BdkException) { status ->
_UniFFILib.INSTANCE.bdk_f2ea_OfflineWallet_new(descriptor.lower(), network.lower(), databaseConfig.lower() ,status) _UniFFILib.INSTANCE.bdk_14a1_OfflineWallet_new(descriptor.lower(), network.lower(), databaseConfig.lower() ,status)
}) })
/** /**
@ -1130,7 +1134,7 @@ class OfflineWallet(
*/ */
override protected fun freeRustArcPtr() { override protected fun freeRustArcPtr() {
rustCall() { status -> rustCall() { status ->
_UniFFILib.INSTANCE.ffi_bdk_f2ea_OfflineWallet_object_free(this.pointer, status) _UniFFILib.INSTANCE.ffi_bdk_14a1_OfflineWallet_object_free(this.pointer, status)
} }
} }
@ -1145,7 +1149,7 @@ class OfflineWallet(
override fun getNewAddress(): String = override fun getNewAddress(): String =
callWithPointer { callWithPointer {
rustCall() { status -> rustCall() { status ->
_UniFFILib.INSTANCE.bdk_f2ea_OfflineWallet_get_new_address(it, status) _UniFFILib.INSTANCE.bdk_14a1_OfflineWallet_get_new_address(it, status)
} }
}.let { }.let {
String.lift(it) String.lift(it)
@ -1170,6 +1174,7 @@ class OfflineWallet(
@ExperimentalUnsignedTypes @ExperimentalUnsignedTypes
public interface OnlineWalletInterface { public interface OnlineWalletInterface {
fun getNetwork(): Network
} }
@ -1180,7 +1185,7 @@ class OnlineWallet(
constructor(descriptor: String, network: Network, databaseConfig: DatabaseConfig, blockchainConfig: BlockchainConfig ) : constructor(descriptor: String, network: Network, databaseConfig: DatabaseConfig, blockchainConfig: BlockchainConfig ) :
this( this(
rustCallWithError(BdkException) { status -> rustCallWithError(BdkException) { status ->
_UniFFILib.INSTANCE.bdk_f2ea_OnlineWallet_new(descriptor.lower(), network.lower(), databaseConfig.lower(), blockchainConfig.lower() ,status) _UniFFILib.INSTANCE.bdk_14a1_OnlineWallet_new(descriptor.lower(), network.lower(), databaseConfig.lower(), blockchainConfig.lower() ,status)
}) })
/** /**
@ -1193,7 +1198,7 @@ class OnlineWallet(
*/ */
override protected fun freeRustArcPtr() { override protected fun freeRustArcPtr() {
rustCall() { status -> rustCall() { status ->
_UniFFILib.INSTANCE.ffi_bdk_f2ea_OnlineWallet_object_free(this.pointer, status) _UniFFILib.INSTANCE.ffi_bdk_14a1_OnlineWallet_object_free(this.pointer, status)
} }
} }
@ -1205,6 +1210,15 @@ class OnlineWallet(
buf.putLong(Pointer.nativeValue(this.lower())) buf.putLong(Pointer.nativeValue(this.lower()))
} }
override fun getNetwork(): Network =
callWithPointer {
rustCall() { status ->
_UniFFILib.INSTANCE.bdk_14a1_OnlineWallet_get_network(it, status)
}
}.let {
Network.lift(it)
}
companion object { companion object {

View File

@ -42,5 +42,7 @@ class LibTest {
val client = BlockchainConfig.Electrum(ElectrumConfig("ssl://electrum.blockstream.info:50002", null, 5u, null, 100u)) val client = BlockchainConfig.Electrum(ElectrumConfig("ssl://electrum.blockstream.info:50002", null, 5u, null, 100u))
val wallet = OnlineWallet(desc, Network.TESTNET, db, client) val wallet = OnlineWallet(desc, Network.TESTNET, db, client)
assertNotNull(wallet) assertNotNull(wallet)
val network = wallet.getNetwork()
assertEquals(network, Network.TESTNET)
} }
} }

View File

@ -94,4 +94,5 @@ interface BlockchainConfig {
interface OnlineWallet { interface OnlineWallet {
[Throws=BdkError] [Throws=BdkError]
constructor(string descriptor, Network network, DatabaseConfig database_config, BlockchainConfig blockchain_config); constructor(string descriptor, Network network, DatabaseConfig database_config, BlockchainConfig blockchain_config);
Network get_network();
}; };

View File

@ -117,6 +117,10 @@ impl OnlineWallet {
)?); )?);
Ok(OnlineWallet { wallet }) Ok(OnlineWallet { wallet })
} }
fn get_network(&self) -> Network {
self.wallet.lock().unwrap().network()
}
} }
uniffi::deps::static_assertions::assert_impl_all!(OfflineWallet: Sync, Send); uniffi::deps::static_assertions::assert_impl_all!(OfflineWallet: Sync, Send);