Make Accounts::background_fetch() not return Result

This commit is contained in:
link2xt
2024-01-30 15:40:36 +00:00
committed by bjoern
parent f7fd1ef2bf
commit d6c24eb9f6
3 changed files with 7 additions and 19 deletions

View File

@@ -4915,19 +4915,11 @@ pub unsafe extern "C" fn dc_accounts_background_fetch(
let accounts = &*accounts; let accounts = &*accounts;
block_on(async move { block_on(async move {
let accounts = accounts.read().await; let accounts = accounts.read().await;
match accounts accounts
.background_fetch(Duration::from_secs(timeout_in_seconds)) .background_fetch(Duration::from_secs(timeout_in_seconds))
.await .await;
{ });
Ok(()) => 1, 1
Err(err) => {
accounts.emit_event(EventType::Error(format!(
"Failed to do background fetch: {err:#}"
)));
0
}
}
})
} }
#[no_mangle] #[no_mangle]

View File

@@ -233,8 +233,7 @@ impl CommandApi {
/// Performs a background fetch for all accounts in parallel with a timeout. /// Performs a background fetch for all accounts in parallel with a timeout.
/// ///
/// The `AccountsBackgroundFetchDone` event is emitted at the end /// The `AccountsBackgroundFetchDone` event is emitted at the end even in case of timeout.
/// if the method returns sucessfully, even in case of timeout.
/// Process all events until you get this one and you can safely return to the background /// Process all events until you get this one and you can safely return to the background
/// without forgetting to create notifications caused by timing race conditions. /// without forgetting to create notifications caused by timing race conditions.
async fn accounts_background_fetch(&self, timeout_in_seconds: f64) -> Result<()> { async fn accounts_background_fetch(&self, timeout_in_seconds: f64) -> Result<()> {
@@ -242,7 +241,7 @@ impl CommandApi {
.write() .write()
.await .await
.background_fetch(std::time::Duration::from_secs_f64(timeout_in_seconds)) .background_fetch(std::time::Duration::from_secs_f64(timeout_in_seconds))
.await?; .await;
Ok(()) Ok(())
} }

View File

@@ -317,9 +317,7 @@ impl Accounts {
/// The `AccountsBackgroundFetchDone` event is emitted at the end, /// The `AccountsBackgroundFetchDone` event is emitted at the end,
/// process all events until you get this one and you can safely return to the background /// process all events until you get this one and you can safely return to the background
/// without forgetting to create notifications caused by timing race conditions. /// without forgetting to create notifications caused by timing race conditions.
/// pub async fn background_fetch(&self, timeout: std::time::Duration) {
/// On error no `AccountsBackgroundFetchDone` event is emitted.
pub async fn background_fetch(&self, timeout: std::time::Duration) -> Result<()> {
if let Err(_err) = if let Err(_err) =
tokio::time::timeout(timeout, self.background_fetch_without_timeout()).await tokio::time::timeout(timeout, self.background_fetch_without_timeout()).await
{ {
@@ -328,7 +326,6 @@ impl Accounts {
)); ));
} }
self.emit_event(EventType::AccountsBackgroundFetchDone); self.emit_event(EventType::AccountsBackgroundFetchDone);
Ok(())
} }
/// Emits a single event. /// Emits a single event.