Add FfiResultVoid type

This commit is contained in:
Steve Myers 2021-07-03 19:24:29 -07:00
parent 3e31e9aca3
commit 2abe7205cb
2 changed files with 13 additions and 8 deletions

View File

@ -9,14 +9,21 @@ pub struct FfiResult<T> {
pub err: char_p_boxed,
}
#[derive_ReprC]
#[repr(C)]
#[derive(Debug)]
pub struct FfiResultVoid {
pub err: char_p_boxed,
}
#[ffi_export]
fn free_string_result(string_result: FfiResult<char_p_boxed>) {
drop(string_result)
}
#[ffi_export]
fn free_int_result(int_result: FfiResult<i32>) {
drop(int_result)
fn free_void_result(void_result: FfiResultVoid) {
drop(void_result)
}
// TODO do we need this? remove?

View File

@ -13,7 +13,7 @@ use blockchain::BlockchainConfig;
use database::DatabaseConfig;
use crate::error::get_name;
use crate::types::FfiResult;
use crate::types::{FfiResult, FfiResultVoid};
use std::ffi::CString;
mod blockchain;
@ -77,15 +77,13 @@ fn free_wallet_result(wallet_result: FfiResult<Option<Box<OpaqueWallet>>>) {
// wallet operations
#[ffi_export]
fn sync_wallet(opaque_wallet: &OpaqueWallet) -> FfiResult<i32> {
fn sync_wallet(opaque_wallet: &OpaqueWallet) -> FfiResultVoid {
let int_result = opaque_wallet.raw.sync(log_progress(), Some(100));
match int_result {
Ok(_v) => FfiResult {
ok: 0,
Ok(_v) => FfiResultVoid {
err: char_p_boxed::from(CString::default()),
},
Err(e) => FfiResult {
ok: -1,
Err(e) => FfiResultVoid {
err: char_p_boxed::try_from(get_name(&e)).unwrap(),
},
}