util.rs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. use darkfi::Result;
  2. use crate::model::{ConnectInfo, Session};
  3. pub fn make_node_id(node_name: &String) -> Result<String> {
  4. let mut id = hex::encode(node_name);
  5. id.insert_str(0, "NODE");
  6. Ok(id)
  7. }
  8. pub fn make_session_id(node_id: &str, session: &Session) -> Result<String> {
  9. let mut num = 0_u64;
  10. let session_chars = match session {
  11. Session::Inbound => vec!['i', 'n'],
  12. Session::Outbound => vec!['o', 'u', 't'],
  13. Session::Manual => vec!['m', 'a', 'n'],
  14. Session::Offline => vec!['o', 'f', 'f'],
  15. };
  16. for i in session_chars {
  17. num += i as u64
  18. }
  19. for i in node_id.chars() {
  20. num += i as u64
  21. }
  22. let mut id = hex::encode(&num.to_ne_bytes());
  23. id.insert_str(0, "SESSION");
  24. Ok(id)
  25. }
  26. pub fn make_connect_id(id: &u64) -> Result<String> {
  27. let mut id = hex::encode(&id.to_ne_bytes());
  28. id.insert_str(0, "CONNECT");
  29. Ok(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 id = match session {
  35. Session::Inbound => {
  36. let session_chars = vec!['i', 'n'];
  37. for i in session_chars {
  38. num += i as u64
  39. }
  40. for i in node_id.chars() {
  41. num += i as u64
  42. }
  43. num += count;
  44. let mut id = hex::encode(&num.to_ne_bytes());
  45. id.insert_str(0, "EMPTYIN");
  46. id
  47. }
  48. Session::Outbound => {
  49. let session_chars = vec!['o', 'u', 't'];
  50. for i in session_chars {
  51. num += i as u64
  52. }
  53. for i in node_id.chars() {
  54. num += i as u64
  55. }
  56. num += count;
  57. let mut id = hex::encode(&num.to_ne_bytes());
  58. id.insert_str(0, "EMPTYOUT");
  59. id
  60. }
  61. Session::Manual => {
  62. let session_chars = vec!['m', 'a', 'n'];
  63. for i in session_chars {
  64. num += i as u64
  65. }
  66. for i in node_id.chars() {
  67. num += i as u64
  68. }
  69. num += count;
  70. let mut id = hex::encode(&num.to_ne_bytes());
  71. id.insert_str(0, "EMPTYMAN");
  72. id
  73. }
  74. Session::Offline => {
  75. let session_chars = vec!['o', 'f', 'f'];
  76. for i in session_chars {
  77. num += i as u64
  78. }
  79. for i in node_id.chars() {
  80. num += i as u64
  81. }
  82. num += count;
  83. let mut id = hex::encode(&num.to_ne_bytes());
  84. id.insert_str(0, "EMPTYOFF");
  85. id
  86. }
  87. };
  88. Ok(id)
  89. }
  90. pub fn is_empty_session(connects: &[ConnectInfo]) -> bool {
  91. return connects.iter().all(|conn| conn.is_empty)
  92. }