tawasuyu

tawasuyu/brahman

Rust 582TOML 222Markdown 73JSON 198635 Definiciones

⎇ 72758e75ce515f355f27615671c95ecaf8c2a8bc crates/core/brahman-handshake/src/transport.rs Rust · 52 líneas · 1.8 KB Historia Quién tocó qué crudo

feat(ente-zero): enchufa el handshake server al Init real df9d10cc5 · Sergio ·

1//! Convenciones de transporte: dónde vive el socket del Init.
2//!
3//! Resolución del path canónico:
4//! 1. Variable de entorno [`SOCKET_ENV`] si está definida (override
5//!    explícito, prioridad máxima).
6//! 2. `$XDG_RUNTIME_DIR/brahman-init.sock` (sesión usuario).
7//! 3. `$TMPDIR/brahman-init.sock` (fallback portable).
8
9use std::path::PathBuf;
10
11/// Variable de entorno que sobreescribe la ruta del socket del Init.
12pub const SOCKET_ENV: &str = "BRAHMAN_INIT_SOCKET";
13
14/// Nombre del socket dentro del runtime dir.
15pub const SOCKET_NAME: &str = "brahman-init.sock";
16
17/// Ruta canónica al socket del Init brahman.
18pub fn default_socket_path() -> PathBuf {
19    if let Ok(p) = std::env::var(SOCKET_ENV) {
20        return PathBuf::from(p);
21    }
22    let base = std::env::var_os("XDG_RUNTIME_DIR")
23        .map(PathBuf::from)
24        .unwrap_or_else(std::env::temp_dir);
25    base.join(SOCKET_NAME)
26}
27
28#[cfg(test)]
29mod tests {
30    use super::*;
31
32    #[test]
33    fn env_override_wins() {
34        // Nota: estos tests modifican entorno del proceso. `cargo test`
35        // los corre paralelos por defecto pero usamos un nombre de var
36        // único y restablecemos al final.
37        let key = "BRAHMAN_INIT_SOCKET_TEST_OVERRIDE";
38        // SAFETY: sólo escribimos una variable local al test; sin
39        // contaminar SOCKET_ENV.
40        std::env::set_var(key, "/tmp/explicit.sock");
41        let saved = std::env::var(SOCKET_ENV).ok();
42        std::env::set_var(SOCKET_ENV, "/tmp/explicit.sock");
43        let p = default_socket_path();
44        assert_eq!(p, PathBuf::from("/tmp/explicit.sock"));
45        // Restaurar
46        match saved {
47            Some(v) => std::env::set_var(SOCKET_ENV, v),
48            None => std::env::remove_var(SOCKET_ENV),
49        }
50        std::env::remove_var(key);
51    }
52}