move pause to only exist on Scheduler

This commit is contained in:
Floris Bruynooghe
2023-03-09 15:44:17 +01:00
committed by link2xt
parent 52fa58a3ce
commit 2c3b2b8c2d
3 changed files with 8 additions and 16 deletions

View File

@@ -24,7 +24,7 @@ use crate::key::{DcKey, SignedPublicKey};
use crate::login_param::LoginParam;
use crate::message::{self, MessageState, MsgId};
use crate::quota::QuotaInfo;
use crate::scheduler::{IoPausedGuard, SchedulerState};
use crate::scheduler::SchedulerState;
use crate::sql::Sql;
use crate::stock_str::StockStrings;
use crate::timesmearing::SmearedTimestamp;
@@ -409,16 +409,6 @@ impl Context {
self.scheduler.restart(self).await;
}
/// Pauses the IO scheduler.
///
/// This temporarily pauses the IO scheduler and will make sure calls to
/// [`Context::start_io`] are no-ops while being paused.
///
/// It is recommended to call [`IoPausedGuard::resume`] rather than simply dropping it.
pub(crate) async fn pause_io(&self) -> IoPausedGuard<'_> {
self.scheduler.pause(self).await
}
/// Indicate that the network likely has come back.
pub async fn maybe_network(&self) {
self.scheduler.maybe_network().await;

View File

@@ -87,7 +87,7 @@ pub async fn imex(
let cancel = context.alloc_ongoing().await?;
let res = {
let mut guard = context.pause_io().await;
let mut guard = context.scheduler.pause(context).await;
let res = imex_inner(context, what, path, passphrase)
.race(async {
cancel.recv().await.ok();

View File

@@ -87,12 +87,14 @@ impl SchedulerState {
}
}
/// Pauses the scheduler.
/// Pauses the IO scheduler.
///
/// If it is currently running the scheduler will be stopped. When
/// [`IoPausedGuard::resume`] is called the scheduler is started again. If in the
/// meantime [`SchedulerState::start`] or [`SchedulerState::stop`] is called resume will
/// do the right thing.
/// [`IoPausedGuard::resume`] is called the scheduler is started again.
///
/// If in the meantime [`SchedulerState::start`] or [`SchedulerState::stop`] is called
/// resume will do the right thing and restore the scheduler to the state requested by
/// the last call.
pub(crate) async fn pause<'a>(&'_ self, context: &'a Context) -> IoPausedGuard<'a> {
let mut inner = self.inner.write().await;
inner.paused = true;