use ntime::Duration;
use std::env;
use std::process;
use std::sync::LazyLock;
use crate::c_bindings;
use crate::sink::LogDepth;
pub static ENV_VAR_COLORTERM: &str = "COLORTERM";
pub static PROCESS_ID: LazyLock<u32> = LazyLock::new(|| process::id());
pub static PROCESS_NAME: LazyLock<String> = LazyLock::new(|| {
let current_exe = env::current_exe();
match ¤t_exe {
Ok(ce) => match ce.file_name() {
Some(n) => match n.to_str() {
Some(s) => return String::from(s),
None => String::from("process_invalid_name"),
},
_ => String::from("process_no_name"),
},
_ => String::from("process"),
}
});
pub static HOSTNAME: LazyLock<String> = LazyLock::new(|| match c_bindings::c_get_hostname() {
Some(s) => s,
None => String::from("localhost"),
});
pub static UTF8_BOM: [u8; 3] = [0xef, 0xbb, 0xbf];
pub const UTF_8_CHAR_MAX_SIZE: usize = 4;
pub const ATTRIBUTE_KEY_ERROR: &str = "error";
pub const ATTRIBUTE_KEY_LEVEL: &str = "level";
pub const ATTRIBUTE_KEY_MESSAGE: &str = "message";
pub const ATTRIBUTE_KEY_TIME: &str = "time";
pub const ATTRIBUTE_KEY_TIMESTAMP: &str = "timestamp";
pub const ATTRIBUTE_KEY_LOGGER_ID: &str = "logger_id";
pub const ATTRIBUTE_KEYS_RESTRICTED: [&str; 3] = [ATTRIBUTE_KEY_LEVEL, ATTRIBUTE_KEY_TIME, ATTRIBUTE_KEY_TIMESTAMP];
pub const ATTRIBUTE_KEYS_PRIORITY: [&str; 2] = [ATTRIBUTE_KEY_MESSAGE, ATTRIBUTE_KEY_ERROR];
pub const MAX_LOGGER_DEPTH: u16 = 1024;
pub const DEFAULT_LOG_DELIMITER_BINARY: &[u8] = "".as_bytes();
#[cfg(not(target_os = "windows"))]
pub const DEFAULT_LOG_DELIMITER_STRING: &[u8] = "\n".as_bytes();
#[cfg(target_os = "windows")]
pub const DEFAULT_LOG_DELIMITER_STRING: &[u8] = "\r\n".as_bytes();
pub const THREAD_FINALIZE_TIMEOUT: Duration = Duration::from_secs(30);
pub const THREAD_FINALIZE_SPINLOCK_WAIT: Duration = Duration::from_millis(100);
pub const NETWORK_TIMEOUT: Duration = Duration::from_secs(30);
pub const DEFUALT_JOURNALD_SOCKET: &str = "/run/systemd/journal/socket";
#[cfg(unix)]
pub const DEFAULT_LOCAL_SYSLOG_SOCKETS: [&str; 3] = ["/dev/log", "/var/run/log", "/var/run/syslog"];
pub const FORMAT_FULL_MAX_DEPTH: LogDepth = 5;
pub const FORMAT_FULL_DEPTH_SEPARATOR: &str = " ";
pub const FORMAT_FULL_DEPTH_ELLIPSIS: &str = "...";