futu_backend/auth/broker/
route_cache.rs1use std::sync::{Arc, Mutex};
2
3use futu_domain_broker_reconnect::{BrokerAuthRouteState, BrokerAuthStage};
4
5#[derive(Debug, Clone, Default)]
10pub struct BrokerAuthRouteCache {
11 inner: Arc<Mutex<BrokerAuthRouteState>>,
12}
13
14impl BrokerAuthRouteCache {
15 pub(crate) fn preferred_stage(&self, original_domain: &str) -> Option<BrokerAuthStage> {
16 let guard = self
17 .inner
18 .lock()
19 .unwrap_or_else(|poisoned| poisoned.into_inner());
20 guard.preferred_stage(original_domain)
21 }
22
23 pub(crate) fn cached_retry_ip(&self, original_domain: &str) -> Option<String> {
24 let guard = self
25 .inner
26 .lock()
27 .unwrap_or_else(|poisoned| poisoned.into_inner());
28 guard.cached_retry_ip(original_domain)
29 }
30
31 pub(crate) fn record_success(
32 &self,
33 original_domain: &str,
34 stage: BrokerAuthStage,
35 retry_ip: Option<String>,
36 ) {
37 let mut guard = self
38 .inner
39 .lock()
40 .unwrap_or_else(|poisoned| poisoned.into_inner());
41 guard.record_success(original_domain, stage, retry_ip);
42 }
43}