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

dnetview/util: add human readable ID prefix for easier debugging

lunar-mining 4 лет назад
Родитель
Сommit
59b954fa69
1 измененных файлов с 63 добавлено и 19 удалено
  1. 63 19
      bin/dnetview/src/util.rs

+ 63 - 19
bin/dnetview/src/util.rs

@@ -9,7 +9,9 @@ pub async fn sleep(millis: u64) {
 }
 
 pub fn make_node_id(node_name: &String) -> Result<String> {
-    Ok(serial::serialize_hex(node_name))
+    let mut id = serial::serialize_hex(node_name);
+    id.insert_str(0, "NODE");
+    Ok(id)
 }
 
 pub fn make_session_id(node_id: &str, session: &Session) -> Result<String> {
@@ -30,11 +32,15 @@ pub fn make_session_id(node_id: &str, session: &Session) -> Result<String> {
         num += i as u64
     }
 
-    Ok(serial::serialize_hex(&num))
+    let mut id = serial::serialize_hex(&num);
+    id.insert_str(0, "SESSION");
+    Ok(id)
 }
 
 pub fn make_connect_id(id: &u64) -> Result<String> {
-    Ok(serial::serialize_hex(id))
+    let mut id = serial::serialize_hex(id);
+    id.insert_str(0, "CONNECT");
+    Ok(id)
 }
 
 pub fn make_empty_id(node_id: &str, session: &Session, count: u64) -> Result<String> {
@@ -42,24 +48,62 @@ pub fn make_empty_id(node_id: &str, session: &Session, count: u64) -> Result<Str
 
     let mut num = 0_u64;
 
-    let session_chars = match session {
-        Session::Inbound => vec!['i', 'n'],
-        Session::Outbound => vec!['o', 'u', 't'],
-        Session::Manual => vec!['m', 'a', 'n'],
-        Session::Offline => vec!['o', 'f', 'f'],
+    let id = match session {
+        Session::Inbound => {
+            let session_chars = vec!['i', 'n'];
+            for i in session_chars {
+                num += i as u64
+            }
+            for i in node_id.chars() {
+                num += i as u64
+            }
+            num += count;
+            let mut id = serial::serialize_hex(&num);
+            id.insert_str(0, "EMPTYIN");
+            id
+        }
+        Session::Outbound => {
+            let session_chars = vec!['o', 'u', 't'];
+            for i in session_chars {
+                num += i as u64
+            }
+            for i in node_id.chars() {
+                num += i as u64
+            }
+            num += count;
+            let mut id = serial::serialize_hex(&num);
+            id.insert_str(0, "EMPTYOUT");
+            id
+        }
+        Session::Manual => {
+            let session_chars = vec!['m', 'a', 'n'];
+            for i in session_chars {
+                num += i as u64
+            }
+            for i in node_id.chars() {
+                num += i as u64
+            }
+            num += count;
+            let mut id = serial::serialize_hex(&num);
+            id.insert_str(0, "EMPTYMAN");
+            id
+        }
+        Session::Offline => {
+            let session_chars = vec!['o', 'f', 'f'];
+            for i in session_chars {
+                num += i as u64
+            }
+            for i in node_id.chars() {
+                num += i as u64
+            }
+            num += count;
+            let mut id = serial::serialize_hex(&num);
+            id.insert_str(0, "EMPTYOFF");
+            id
+        }
     };
 
-    for i in session_chars {
-        num += i as u64
-    }
-
-    for i in node_id.chars() {
-        num += i as u64
-    }
-
-    num += count;
-
-    Ok(serial::serialize_hex(&num))
+    Ok(id)
 }
 
 pub fn is_empty_session(connects: &[ConnectInfo]) -> bool {