mod.rs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. mod src;
  2. pub use src::*;
  3. use hbb_common::{allow_err, log};
  4. use std::sync::{Arc, Mutex};
  5. lazy_static::lazy_static! {
  6. static ref STOP: Arc<Mutex<bool>> = Arc::new(Mutex::new(true));
  7. }
  8. fn is_running() -> bool {
  9. !*STOP.lock().unwrap()
  10. }
  11. pub fn start() {
  12. if is_running() {
  13. return;
  14. }
  15. *STOP.lock().unwrap() = false;
  16. let port = rendezvous_server::DEFAULT_PORT;
  17. let addr = format!("0.0.0.0:{}", port);
  18. let addr2 = format!("0.0.0.0:{}", port.parse::<i32>().unwrap_or(0) - 1);
  19. let relay_servers: Vec<String> = Default::default();
  20. std::thread::spawn(move || {
  21. allow_err!(rendezvous_server::RendezvousServer::start(
  22. &addr,
  23. &addr2,
  24. relay_servers,
  25. 0,
  26. Default::default(),
  27. Default::default(),
  28. "",
  29. STOP.clone(),
  30. ));
  31. });
  32. std::thread::spawn(|| {
  33. allow_err!(relay_server::start(
  34. relay_server::DEFAULT_PORT,
  35. "",
  36. STOP.clone()
  37. ));
  38. });
  39. }
  40. pub fn stop() {
  41. *STOP.lock().unwrap() = true;
  42. }