refactor: 优化 unsubscribe_points_from_source 中 status 锁粒度,使用 get_session 函数
This commit is contained in:
parent
4d88bcbce3
commit
487d3cdf26
|
|
@ -1207,14 +1207,16 @@ impl ConnectionManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
let target_ids: std::collections::HashSet<Uuid> = point_ids.into_iter().collect();
|
let target_ids: std::collections::HashSet<Uuid> = point_ids.into_iter().collect();
|
||||||
let (session, subscription_id, point_item_pairs) = {
|
let session = self.get_session(source_id).await;
|
||||||
|
let Some(session) = session else {
|
||||||
|
return Ok(0);
|
||||||
|
};
|
||||||
|
|
||||||
|
let (subscription_id, point_item_pairs) = {
|
||||||
let status = self.status.read().await;
|
let status = self.status.read().await;
|
||||||
let Some(conn_status) = status.get(&source_id) else {
|
let Some(conn_status) = status.get(&source_id) else {
|
||||||
return Ok(0);
|
return Ok(0);
|
||||||
};
|
};
|
||||||
let Some(session) = conn_status.session.clone() else {
|
|
||||||
return Ok(0);
|
|
||||||
};
|
|
||||||
let Some(subscription_id) = conn_status.subscription_id else {
|
let Some(subscription_id) = conn_status.subscription_id else {
|
||||||
return Ok(0);
|
return Ok(0);
|
||||||
};
|
};
|
||||||
|
|
@ -1226,7 +1228,7 @@ impl ConnectionManager {
|
||||||
.map(|(point_id, monitored_item_id)| (*point_id, *monitored_item_id))
|
.map(|(point_id, monitored_item_id)| (*point_id, *monitored_item_id))
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
(session, subscription_id, items)
|
(subscription_id, items)
|
||||||
};
|
};
|
||||||
|
|
||||||
if point_item_pairs.is_empty() {
|
if point_item_pairs.is_empty() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue