From d8af9b45764f114e5b67e026211bece458de8112 Mon Sep 17 00:00:00 2001 From: mdecimus Date: Sun, 24 Mar 2024 19:20:36 +0100 Subject: Settings hot reloading - Part 3 --- crates/jmap/src/push/manager.rs | 33 +++++++++++---------------------- 1 file changed, 11 insertions(+), 22 deletions(-) (limited to 'crates/jmap/src/push/manager.rs') diff --git a/crates/jmap/src/push/manager.rs b/crates/jmap/src/push/manager.rs index 283467cf..bfee8259 100644 --- a/crates/jmap/src/push/manager.rs +++ b/crates/jmap/src/push/manager.rs @@ -25,9 +25,8 @@ use base64::{engine::general_purpose, Engine}; use jmap_proto::types::id::Id; use store::ahash::{AHashMap, AHashSet}; use tokio::sync::mpsc; -use utils::{config::Config, UnwrapFailure}; -use crate::{api::StateChangeResponse, services::IPC_CHANNEL_BUFFER, LONG_SLUMBER}; +use crate::{api::StateChangeResponse, services::IPC_CHANNEL_BUFFER, JmapInstance, LONG_SLUMBER}; use super::{ece::ece_encrypt, EncryptionKeys, Event, PushServer, PushUpdate}; @@ -37,29 +36,10 @@ use std::{ time::{Duration, Instant}, }; -pub fn spawn_push_manager(settings: &Config) -> mpsc::Sender { +pub fn spawn_push_manager(core: JmapInstance) -> mpsc::Sender { let (push_tx_, mut push_rx) = mpsc::channel::(IPC_CHANNEL_BUFFER); let push_tx = push_tx_.clone(); - let push_attempt_interval: Duration = settings - .property_or_default("jmap.push.attempts.interval", "1m") - .failed("Invalid configuration"); - let push_attempts_max: u32 = settings - .property_or_default("jmap.push.attempts.max", "3") - .failed("Invalid configuration"); - let push_retry_interval: Duration = settings - .property_or_default("jmap.push.retry.interval", "1s") - .failed("Invalid configuration"); - let push_timeout: Duration = settings - .property_or_default("jmap.push.timeout.request", "10s") - .failed("Invalid configuration"); - let push_verify_timeout: Duration = settings - .property_or_default("jmap.push.timeout.verify", "1m") - .failed("Invalid configuration"); - let push_throttle: Duration = settings - .property_or_default("jmap.push.throttle", "1s") - .failed("Invalid configuration"); - tokio::spawn(async move { let mut subscriptions = AHashMap::default(); let mut last_verify: AHashMap = AHashMap::default(); @@ -68,6 +48,15 @@ pub fn spawn_push_manager(settings: &Config) -> mpsc::Sender { let mut retry_ids = AHashSet::default(); loop { + // Load settings + let core_ = core.core.load(); + let push_attempt_interval = core_.jmap.push_attempt_interval; + let push_attempts_max = core_.jmap.push_attempts_max; + let push_retry_interval = core_.jmap.push_retry_interval; + let push_timeout = core_.jmap.push_timeout; + let push_verify_timeout = core_.jmap.push_verify_timeout; + let push_throttle = core_.jmap.push_throttle; + match tokio::time::timeout(retry_timeout, push_rx.recv()).await { Ok(Some(event)) => match event { Event::Update { updates } => { -- cgit v1.2.3-70-g09d2