rust: Remove duplicate FFI method

We already use -1 to indicate no block scanning limit on the Kotlin side of
the FFI; we can do the same across the FFI to the Rust side.
This commit is contained in:
Jack Grigg 2022-10-15 14:39:18 +13:00 committed by Carter Jernigan
parent 6a6cbf4048
commit 9ff3621980
2 changed files with 15 additions and 50 deletions

View File

@ -194,23 +194,13 @@ internal class RustBackend private constructor(
} }
override suspend fun scanBlocks(limit: Int): Boolean { override suspend fun scanBlocks(limit: Int): Boolean {
return if (limit > 0) { return withContext(SdkDispatchers.DATABASE_IO) {
withContext(SdkDispatchers.DATABASE_IO) { scanBlocks(
scanBlockBatch( cacheDbFile.absolutePath,
cacheDbFile.absolutePath, dataDbFile.absolutePath,
dataDbFile.absolutePath, limit,
limit, networkId = network.id
networkId = network.id )
)
}
} else {
withContext(SdkDispatchers.DATABASE_IO) {
scanBlocks(
cacheDbFile.absolutePath,
dataDbFile.absolutePath,
networkId = network.id
)
}
} }
} }
@ -473,13 +463,6 @@ internal class RustBackend private constructor(
@JvmStatic @JvmStatic
private external fun scanBlocks( private external fun scanBlocks(
dbCachePath: String,
dbDataPath: String,
networkId: Int
): Boolean
@JvmStatic
private external fun scanBlockBatch(
dbCachePath: String, dbCachePath: String,
dbDataPath: String, dbDataPath: String,
limit: Int, limit: Int,

View File

@ -949,6 +949,7 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_scanBlocks(
_: JClass<'_>, _: JClass<'_>,
db_cache: JString<'_>, db_cache: JString<'_>,
db_data: JString<'_>, db_data: JString<'_>,
limit: jint,
network_id: jint, network_id: jint,
) -> jboolean { ) -> jboolean {
let res = panic::catch_unwind(|| { let res = panic::catch_unwind(|| {
@ -956,10 +957,15 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_scanBlocks(
let db_cache = block_db(&env, db_cache)?; let db_cache = block_db(&env, db_cache)?;
let db_data = wallet_db(&env, network, db_data)?; let db_data = wallet_db(&env, network, db_data)?;
let mut db_data = db_data.get_update_ops()?; let mut db_data = db_data.get_update_ops()?;
let limit = u32::try_from(limit).ok();
match scan_cached_blocks(&network, &db_cache, &mut db_data, None) { match scan_cached_blocks(&network, &db_cache, &mut db_data, limit) {
Ok(()) => Ok(JNI_TRUE), Ok(()) => Ok(JNI_TRUE),
Err(e) => Err(format_err!("Rust error while scanning blocks: {}", e)), Err(e) => Err(format_err!(
"Rust error while scanning blocks (limit {:?}): {}",
limit,
e
)),
} }
}); });
unwrap_exc_or(&env, res, JNI_FALSE) unwrap_exc_or(&env, res, JNI_FALSE)
@ -1012,30 +1018,6 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_putUtxo(
unwrap_exc_or(&env, res, JNI_FALSE) unwrap_exc_or(&env, res, JNI_FALSE)
} }
// ADDED BY ANDROID
#[no_mangle]
pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_scanBlockBatch(
env: JNIEnv<'_>,
_: JClass<'_>,
db_cache: JString<'_>,
db_data: JString<'_>,
limit: jint,
network_id: jint,
) -> jboolean {
let res = panic::catch_unwind(|| {
let network = parse_network(network_id as u32)?;
let db_cache = block_db(&env, db_cache)?;
let db_data = wallet_db(&env, network, db_data)?;
let mut db_data = db_data.get_update_ops()?;
match scan_cached_blocks(&network, &db_cache, &mut db_data, Some(limit as u32)) {
Ok(()) => Ok(JNI_TRUE),
Err(e) => Err(format_err!("Rust error while scanning block batch: {}", e)),
}
});
unwrap_exc_or(&env, res, JNI_FALSE)
}
#[no_mangle] #[no_mangle]
pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_tool_DerivationTool_deriveTransparentAccountPrivKeyFromSeed( pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_tool_DerivationTool_deriveTransparentAccountPrivKeyFromSeed(
env: JNIEnv<'_>, env: JNIEnv<'_>,