Просмотр исходного кода

dnetview/ parse: save ids of all selectable objects, not just nodes

lunar-mining 4 лет назад
Родитель
Сommit
83631661d3
1 измененных файлов с 5 добавлено и 3 удалено
  1. 5 3
      bin/dnetview/src/main.rs

+ 5 - 3
bin/dnetview/src/main.rs

@@ -179,9 +179,8 @@ async fn parse_data(
 
     let node_info = NodeInfo::new(node_id.clone(), node_name.to_string(), sessions.clone());
 
-    update_ids(model.clone(), node_id.clone()).await;
     update_node_info(model.clone(), node_info.clone(), node_id.clone()).await;
-    update_select_info(model.clone(), sessions.clone(), node_info.clone()).await?;
+    update_selectable_and_ids(model.clone(), sessions.clone(), node_info.clone()).await?;
 
     //debug!("IDS: {:?}", model.ids.lock().await);
     //debug!("INFOS: {:?}", model.infos.lock().await);
@@ -197,19 +196,22 @@ async fn update_node_info(model: Arc<Model>, node: NodeInfo, id: String) {
     model.node_info.lock().await.insert(id, node);
 }
 
-async fn update_select_info(
+async fn update_selectable_and_ids(
     model: Arc<Model>,
     sessions: Vec<SessionInfo>,
     node_info: NodeInfo,
 ) -> Result<()> {
     let node_obj = SelectableObject::Node(node_info.clone());
     model.select_info.lock().await.insert(node_info.node_id.clone(), node_obj);
+    update_ids(model.clone(), node_info.node_id.clone()).await;
     for session in sessions.clone() {
         let session_obj = SelectableObject::Session(session.clone());
         model.select_info.lock().await.insert(session.clone().session_id, session_obj);
+        update_ids(model.clone(), session.clone().session_id).await;
         for connect in session.children {
             let connect_obj = SelectableObject::Connect(connect.clone());
             model.select_info.lock().await.insert(connect.clone().connect_id, connect_obj);
+            update_ids(model.clone(), connect.clone().connect_id).await;
         }
     }
     Ok(())