Add env variable to define beacon server address

This commit replaces the default hardcoded value for the beacon server
address with an envvar. This allows one to run comet on one machine
while running the UI on another one (e.g. embedded system).
This commit is contained in:
Julien Guibert-Peeters 2025-06-26 16:34:04 +02:00 committed by Héctor Ramón Jiménez
parent 625fc76f19
commit d58e9ef191
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
2 changed files with 18 additions and 5 deletions

View file

@ -15,8 +15,6 @@ use std::sync::Arc;
use std::sync::atomic::{self, AtomicBool};
use std::thread;
pub const SERVER_ADDRESS: &str = "127.0.0.1:9167";
#[derive(Debug, Clone)]
pub struct Client {
sender: mpsc::Sender<Action>,
@ -222,9 +220,22 @@ async fn run(
}
}
/// Returns the address of the beacon server in this environment.
///
/// The value of the `ICED_BEACON_SERVER_ADDRESS` env variable will
/// be returned, if defined.
///
/// Otherwise, a default local server address will be returned.
pub fn server_address_from_env() -> String {
const DEFAULT_ADDRESS: &str = "127.0.0.1:9167";
std::env::var("ICED_BEACON_SERVER_ADDRESS")
.unwrap_or_else(|_| String::from(DEFAULT_ADDRESS))
}
async fn _connect() -> Result<net::TcpStream, io::Error> {
log::debug!("Attempting to connect to server...");
let stream = net::TcpStream::connect(SERVER_ADDRESS).await?;
let stream = net::TcpStream::connect(server_address_from_env()).await?;
stream.set_nodelay(true)?;
stream.writable().await?;

View file

@ -91,7 +91,7 @@ impl Event {
}
pub fn is_running() -> bool {
std::net::TcpListener::bind(client::SERVER_ADDRESS).is_err()
std::net::TcpListener::bind(client::server_address_from_env()).is_err()
}
pub fn run() -> impl Stream<Item = Event> {
@ -99,7 +99,9 @@ pub fn run() -> impl Stream<Item = Event> {
let mut buffer = Vec::new();
let server = loop {
match net::TcpListener::bind(client::SERVER_ADDRESS).await {
match net::TcpListener::bind(client::server_address_from_env())
.await
{
Ok(server) => break server,
Err(error) => {
if error.kind() == io::ErrorKind::AddrInUse {