mod.rs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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. pub fn bootstrap(key: &str, host: &str) {
  9. let port = rendezvous_server::DEFAULT_PORT;
  10. let addr = format!("0.0.0.0:{}", port);
  11. let addr2 = format!("0.0.0.0:{}", port.parse::<i32>().unwrap_or(0) - 1);
  12. let relay_servers: Vec<String> = vec![format!("{}:{}", host, relay_server::DEFAULT_PORT)];
  13. let tmp_key = key.to_owned();
  14. std::thread::spawn(move || {
  15. allow_err!(rendezvous_server::RendezvousServer::start(
  16. &addr,
  17. &addr2,
  18. relay_servers,
  19. 0,
  20. Default::default(),
  21. Default::default(),
  22. &tmp_key,
  23. STOP.clone(),
  24. ));
  25. });
  26. let tmp_key = key.to_owned();
  27. std::thread::spawn(move || {
  28. allow_err!(relay_server::start(
  29. relay_server::DEFAULT_PORT,
  30. &tmp_key,
  31. STOP.clone()
  32. ));
  33. });
  34. }
  35. pub fn stop() {
  36. *STOP.lock().unwrap() = true;
  37. }
  38. pub fn start() {
  39. *STOP.lock().unwrap() = false;
  40. }