mirror of
https://git.proxmox.com/git/proxmox-backup-qemu
synced 2025-10-04 22:11:27 +00:00
cleanup: also improve code resuse and parameter checks for restore
This commit is contained in:
parent
cc18a7d7f5
commit
31ea3e4872
62
src/lib.rs
62
src/lib.rs
@ -252,18 +252,19 @@ pub extern "C" fn proxmox_backup_connect(
|
|||||||
handle: *mut ProxmoxBackupHandle,
|
handle: *mut ProxmoxBackupHandle,
|
||||||
error: *mut *mut c_char,
|
error: *mut *mut c_char,
|
||||||
) -> c_int {
|
) -> c_int {
|
||||||
let task = backup_handle_to_task(handle);
|
|
||||||
|
|
||||||
let mut result: c_int = -1;
|
let mut result: c_int = -1;
|
||||||
|
|
||||||
let mut got_result_condition = GotResultCondition::new();
|
let mut got_result_condition = GotResultCondition::new();
|
||||||
|
|
||||||
let callback_info = got_result_condition.callback_info(&mut result, error);
|
let callback_info = got_result_condition.callback_info(&mut result, error);
|
||||||
|
|
||||||
task.runtime().spawn(async move {
|
proxmox_backup_connect_async(
|
||||||
let result = task.connect().await;
|
handle,
|
||||||
callback_info.send_result(result);
|
callback_info.callback,
|
||||||
});
|
callback_info.callback_data,
|
||||||
|
callback_info.result,
|
||||||
|
callback_info.error,
|
||||||
|
);
|
||||||
|
|
||||||
got_result_condition.wait();
|
got_result_condition.wait();
|
||||||
|
|
||||||
@ -716,18 +717,19 @@ pub extern "C" fn proxmox_restore_connect(
|
|||||||
handle: *mut ProxmoxRestoreHandle,
|
handle: *mut ProxmoxRestoreHandle,
|
||||||
error: *mut *mut c_char,
|
error: *mut *mut c_char,
|
||||||
) -> c_int {
|
) -> c_int {
|
||||||
let restore_task = restore_handle_to_task(handle);
|
|
||||||
|
|
||||||
let mut result: c_int = -1;
|
let mut result: c_int = -1;
|
||||||
|
|
||||||
let mut got_result_condition = GotResultCondition::new();
|
let mut got_result_condition = GotResultCondition::new();
|
||||||
|
|
||||||
let callback_info = got_result_condition.callback_info(&mut result, error);
|
let callback_info = got_result_condition.callback_info(&mut result, error);
|
||||||
|
|
||||||
restore_task.runtime().spawn(async move {
|
proxmox_restore_connect_async(
|
||||||
let result = restore_task.connect().await;
|
handle,
|
||||||
callback_info.send_result(result);
|
callback_info.callback,
|
||||||
});
|
callback_info.callback_data,
|
||||||
|
callback_info.result,
|
||||||
|
callback_info.error,
|
||||||
|
);
|
||||||
|
|
||||||
got_result_condition.wait();
|
got_result_condition.wait();
|
||||||
|
|
||||||
@ -818,21 +820,17 @@ pub extern "C" fn proxmox_restore_open_image(
|
|||||||
archive_name: *const c_char,
|
archive_name: *const c_char,
|
||||||
error: * mut * mut c_char,
|
error: * mut * mut c_char,
|
||||||
) -> c_int {
|
) -> c_int {
|
||||||
let restore_task = restore_handle_to_task(handle);
|
|
||||||
|
|
||||||
let mut result: c_int = -1;
|
let mut result: c_int = -1;
|
||||||
let mut got_result_condition = GotResultCondition::new();
|
let mut got_result_condition = GotResultCondition::new();
|
||||||
let callback_info = got_result_condition.callback_info(&mut result, error);
|
let callback_info = got_result_condition.callback_info(&mut result, error);
|
||||||
|
|
||||||
let archive_name = unsafe { tools::utf8_c_string_lossy_non_null(archive_name) };
|
proxmox_restore_open_image_async(
|
||||||
|
handle, archive_name,
|
||||||
restore_task.runtime().spawn(async move {
|
callback_info.callback,
|
||||||
let result = match restore_task.open_image(archive_name).await {
|
callback_info.callback_data,
|
||||||
Ok(res) => Ok(res as i32),
|
callback_info.result,
|
||||||
Err(err) => Err(err)
|
callback_info.error,
|
||||||
};
|
);
|
||||||
callback_info.send_result(result);
|
|
||||||
});
|
|
||||||
|
|
||||||
got_result_condition.wait();
|
got_result_condition.wait();
|
||||||
|
|
||||||
@ -852,6 +850,8 @@ pub extern "C" fn proxmox_restore_open_image_async(
|
|||||||
) {
|
) {
|
||||||
let restore_task = restore_handle_to_task(handle);
|
let restore_task = restore_handle_to_task(handle);
|
||||||
let callback_info = CallbackPointers { callback, callback_data, error, result };
|
let callback_info = CallbackPointers { callback, callback_data, error, result };
|
||||||
|
|
||||||
|
param_not_null!(archive_name, callback_info);
|
||||||
let archive_name = unsafe { tools::utf8_c_string_lossy_non_null(archive_name) };
|
let archive_name = unsafe { tools::utf8_c_string_lossy_non_null(archive_name) };
|
||||||
|
|
||||||
restore_task.runtime().spawn(async move {
|
restore_task.runtime().spawn(async move {
|
||||||
@ -898,19 +898,19 @@ pub extern "C" fn proxmox_restore_read_image_at(
|
|||||||
size: u64,
|
size: u64,
|
||||||
error: * mut * mut c_char,
|
error: * mut * mut c_char,
|
||||||
) -> c_int {
|
) -> c_int {
|
||||||
let restore_task = restore_handle_to_task(handle);
|
|
||||||
|
|
||||||
let mut result: c_int = -1;
|
let mut result: c_int = -1;
|
||||||
|
|
||||||
let mut got_result_condition = GotResultCondition::new();
|
let mut got_result_condition = GotResultCondition::new();
|
||||||
|
|
||||||
let callback_info = got_result_condition.callback_info(&mut result, error);
|
let callback_info = got_result_condition.callback_info(&mut result, error);
|
||||||
let data = DataPointer(data);
|
|
||||||
|
|
||||||
restore_task.runtime().spawn(async move {
|
proxmox_restore_read_image_at_async(
|
||||||
let result = restore_task.read_image_at(aid, data, offset, size).await;
|
handle, aid, data, offset, size,
|
||||||
callback_info.send_result(result);
|
callback_info.callback,
|
||||||
});
|
callback_info.callback_data,
|
||||||
|
callback_info.result,
|
||||||
|
callback_info.error,
|
||||||
|
);
|
||||||
|
|
||||||
got_result_condition.wait();
|
got_result_condition.wait();
|
||||||
|
|
||||||
@ -944,6 +944,8 @@ pub extern "C" fn proxmox_restore_read_image_at_async(
|
|||||||
let restore_task = restore_handle_to_task(handle);
|
let restore_task = restore_handle_to_task(handle);
|
||||||
|
|
||||||
let callback_info = CallbackPointers { callback, callback_data, error, result };
|
let callback_info = CallbackPointers { callback, callback_data, error, result };
|
||||||
|
|
||||||
|
param_not_null!(data, callback_info);
|
||||||
let data = DataPointer(data);
|
let data = DataPointer(data);
|
||||||
|
|
||||||
restore_task.runtime().spawn(async move {
|
restore_task.runtime().spawn(async move {
|
||||||
|
Loading…
Reference in New Issue
Block a user