23 lines
538 B
Rust
23 lines
538 B
Rust
use std::time::Duration;
|
|
|
|
use tokio::net::TcpStream;
|
|
use tokio::time;
|
|
|
|
/// Check whether a given port is open or not
|
|
pub async fn is_port_open(port: u16) -> bool {
|
|
TcpStream::connect(("127.0.0.1", port)).await.is_ok()
|
|
}
|
|
|
|
/// Wait for a port to become available
|
|
pub async fn wait_for_port(port: u16) {
|
|
for _ in 0..50 {
|
|
if is_port_open(port).await {
|
|
return;
|
|
}
|
|
time::sleep(Duration::from_millis(10)).await;
|
|
}
|
|
|
|
eprintln!("Port {} did not open in time!", port);
|
|
std::process::exit(2);
|
|
}
|