mirror of
https://github.com/chatmail/core.git
synced 2026-05-08 01:16:31 +03:00
Send `EventType::ConnectivityChanged` when using the context methods `start_io` and `stop_io`. close #5097 --------- Co-authored-by: Septias <scoreplayer2000@gmail.comclear>
This commit is contained in:
@@ -70,8 +70,11 @@ impl SchedulerState {
|
|||||||
context.new_msgs_notify.notify_one();
|
context.new_msgs_notify.notify_one();
|
||||||
|
|
||||||
let ctx = context.clone();
|
let ctx = context.clone();
|
||||||
match Scheduler::start(context).await {
|
match Scheduler::start(&context).await {
|
||||||
Ok(scheduler) => *inner = InnerSchedulerState::Started(scheduler),
|
Ok(scheduler) => {
|
||||||
|
*inner = InnerSchedulerState::Started(scheduler);
|
||||||
|
context.emit_event(EventType::ConnectivityChanged);
|
||||||
|
}
|
||||||
Err(err) => error!(&ctx, "Failed to start IO: {:#}", err),
|
Err(err) => error!(&ctx, "Failed to start IO: {:#}", err),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -116,6 +119,7 @@ impl SchedulerState {
|
|||||||
debug_logging.loop_handle.abort();
|
debug_logging.loop_handle.abort();
|
||||||
}
|
}
|
||||||
let prev_state = std::mem::replace(&mut *inner, new_state);
|
let prev_state = std::mem::replace(&mut *inner, new_state);
|
||||||
|
context.emit_event(EventType::ConnectivityChanged);
|
||||||
match prev_state {
|
match prev_state {
|
||||||
InnerSchedulerState::Started(scheduler) => scheduler.stop(context).await,
|
InnerSchedulerState::Started(scheduler) => scheduler.stop(context).await,
|
||||||
InnerSchedulerState::Stopped | InnerSchedulerState::Paused { .. } => (),
|
InnerSchedulerState::Stopped | InnerSchedulerState::Paused { .. } => (),
|
||||||
@@ -772,7 +776,7 @@ async fn smtp_loop(
|
|||||||
|
|
||||||
impl Scheduler {
|
impl Scheduler {
|
||||||
/// Start the scheduler.
|
/// Start the scheduler.
|
||||||
pub async fn start(ctx: Context) -> Result<Self> {
|
pub async fn start(ctx: &Context) -> Result<Self> {
|
||||||
let (smtp, smtp_handlers) = SmtpConnectionState::new();
|
let (smtp, smtp_handlers) = SmtpConnectionState::new();
|
||||||
|
|
||||||
let (smtp_start_send, smtp_start_recv) = oneshot::channel();
|
let (smtp_start_send, smtp_start_recv) = oneshot::channel();
|
||||||
@@ -782,7 +786,7 @@ impl Scheduler {
|
|||||||
let mut oboxes = Vec::new();
|
let mut oboxes = Vec::new();
|
||||||
let mut start_recvs = Vec::new();
|
let mut start_recvs = Vec::new();
|
||||||
|
|
||||||
let (conn_state, inbox_handlers) = ImapConnectionState::new(&ctx).await?;
|
let (conn_state, inbox_handlers) = ImapConnectionState::new(ctx).await?;
|
||||||
let (inbox_start_send, inbox_start_recv) = oneshot::channel();
|
let (inbox_start_send, inbox_start_recv) = oneshot::channel();
|
||||||
let handle = {
|
let handle = {
|
||||||
let ctx = ctx.clone();
|
let ctx = ctx.clone();
|
||||||
@@ -803,7 +807,7 @@ impl Scheduler {
|
|||||||
),
|
),
|
||||||
] {
|
] {
|
||||||
if should_watch? {
|
if should_watch? {
|
||||||
let (conn_state, handlers) = ImapConnectionState::new(&ctx).await?;
|
let (conn_state, handlers) = ImapConnectionState::new(ctx).await?;
|
||||||
let (start_send, start_recv) = oneshot::channel();
|
let (start_send, start_recv) = oneshot::channel();
|
||||||
let ctx = ctx.clone();
|
let ctx = ctx.clone();
|
||||||
let handle = task::spawn(simple_imap_loop(ctx, start_send, handlers, meaning));
|
let handle = task::spawn(simple_imap_loop(ctx, start_send, handlers, meaning));
|
||||||
|
|||||||
Reference in New Issue
Block a user