util.rs 1.6 KB

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