From 173814416fa5c7bba5d5acc769eb78a23b36b698 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 4 Mar 2026 12:20:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=BD=9C=E5=9C=A8=E7=9A=84?= =?UTF-8?q?=E6=AD=BB=E9=94=81=E9=97=AE=E9=A2=98=EF=BC=9A=E5=B0=86=E8=AF=BB?= =?UTF-8?q?=E9=94=81=E7=9A=84=E4=BD=9C=E7=94=A8=E5=9F=9F=E9=99=90=E5=88=B6?= =?UTF-8?q?=E5=9C=A8=E5=9D=97=E5=86=85=EF=BC=8C=E9=81=BF=E5=85=8D=E5=9C=A8?= =?UTF-8?q?=E6=8C=81=E6=9C=89=E8=AF=BB=E9=94=81=E6=97=B6=E5=B0=9D=E8=AF=95?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=86=99=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/event.rs | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/event.rs b/src/event.rs index f844243..8de25db 100644 --- a/src/event.rs +++ b/src/event.rs @@ -129,18 +129,19 @@ impl EventManager { .get(&source_id) .and_then(|s| s.client_handle_map.get(&client_handle).copied()) }; - if let Some(point_id) = point_id { // 从缓存中读取旧值 - let monitor_data = connection_manager.get_point_monitor_data_read_guard().await; - let old_monitor_info = monitor_data.get(&point_id); + let (old_value, old_timestamp, value_changed) = { + let monitor_data = connection_manager.get_point_monitor_data_read_guard().await; + let old_monitor_info = monitor_data.get(&point_id); - let (old_value, old_timestamp, value_changed) = if let Some(old_info) = old_monitor_info { - let changed = old_info.value != payload.value || - old_info.timestamp != payload.timestamp; - (old_info.value.clone(), old_info.timestamp, changed) - } else { - (None, None, false) + if let Some(old_info) = old_monitor_info { + let changed = old_info.value != payload.value || + old_info.timestamp != payload.timestamp; + (old_info.value.clone(), old_info.timestamp, changed) + } else { + (None, None, false) + } }; let monitor = crate::telemetry::PointMonitorInfo { @@ -167,7 +168,6 @@ impl EventManager { if let Some(ws_manager) = &ws_manager_clone { let ws_message = crate::websocket::WsMessage::PointNewValue(monitor); - if let Err(e) = ws_manager.send_to_public(ws_message.clone()).await { tracing::error!("Failed to send WebSocket message to public room: {}", e); } @@ -175,7 +175,7 @@ impl EventManager { if let Err(e) = ws_manager.send_to_client(point_id, ws_message).await { tracing::error!("Failed to send WebSocket message to client room {}: {}", point_id, e); } - } + } } else { tracing::warn!("Point not found for source {} client_handle {}", source_id, client_handle); }