util.rs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. use crate::model::{ConnectInfo, Session};
  2. use darkfi::{util::serial, Result};
  3. pub fn make_node_id(node_name: &String) -> Result<String> {
  4. Ok(serial::serialize_hex(node_name))
  5. }
  6. pub fn make_session_id(node_id: &str, session: &Session) -> Result<String> {
  7. let mut num = 0_u64;
  8. let session_chars = match session {
  9. Session::Inbound => vec!['i', 'n'],
  10. Session::Outbound => vec!['o', 'u', 't'],
  11. Session::Manual => vec!['m', 'a', 'n'],
  12. Session::Offline => vec!['o', 'f', 'f'],
  13. };
  14. for i in session_chars {
  15. num += i as u64
  16. }
  17. for i in node_id.chars() {
  18. num += i as u64
  19. }
  20. Ok(serial::serialize_hex(&num))
  21. }
  22. pub fn make_connect_id(id: &u64) -> Result<String> {
  23. Ok(serial::serialize_hex(id))
  24. }
  25. pub fn make_empty_id(node_id: &str, session: &Session, count: u64) -> Result<String> {
  26. let count = count * 2;
  27. let mut num = 0_u64;
  28. let session_chars = match session {
  29. Session::Inbound => vec!['i', 'n'],
  30. Session::Outbound => vec!['o', 'u', 't'],
  31. Session::Manual => vec!['m', 'a', 'n'],
  32. Session::Offline => vec!['o', 'f', 'f'],
  33. };
  34. for i in session_chars {
  35. num += i as u64
  36. }
  37. for i in node_id.chars() {
  38. num += i as u64
  39. }
  40. num += count;
  41. Ok(serial::serialize_hex(&num))
  42. }
  43. pub fn is_empty_session(connects: &[ConnectInfo]) -> bool {
  44. return connects.iter().all(|conn| conn.is_empty)
  45. }