const DEFAULT_FILE_IO_CHUNK: usize = 1024 * 1024; const DEFAULT_HTTP_CHUNK: usize = 64 * 1024; const DEFAULT_WEBSOCKET_CHUNK: usize = 32 * 1024; const DEFAULT_WEBTRANSPORT_CHUNK: usize = 64 * 1024; const DEFAULT_INMEMORY_CHUNK: usize = 512 * 1024;
fn env_or(var: &str, default: usize) -> usize {
std::env::var(var)
.ok()
.and_then(|v| v.parse().ok())
.unwrap_or(default)
}
use std::sync::OnceLock;
fn cached_env(cell: &OnceLock<usize>, var: &str, default: usize) -> usize {
*cell.get_or_init(|| env_or(var, default))
}
static FILE_IO_CHUNK: OnceLock<usize> = OnceLock::new();
static HTTP_CHUNK: OnceLock<usize> = OnceLock::new();
static WEBSOCKET_CHUNK: OnceLock<usize> = OnceLock::new();
static WEBTRANSPORT_CHUNK: OnceLock<usize> = OnceLock::new();
static INMEMORY_CHUNK: OnceLock<usize> = OnceLock::new();
static ARENA_CAPACITY: OnceLock<usize> = OnceLock::new();
pub fn file_io_chunk_size() -> usize {
cached_env(
&FILE_IO_CHUNK,
"LIGHTSTREAM_FILE_IO_CHUNK_SIZE",
DEFAULT_FILE_IO_CHUNK,
)
}
pub fn http_chunk_size() -> usize {
cached_env(
&HTTP_CHUNK,
"LIGHTSTREAM_HTTP_CHUNK_SIZE",
DEFAULT_HTTP_CHUNK,
)
}
pub fn websocket_chunk_size() -> usize {
cached_env(
&WEBSOCKET_CHUNK,
"LIGHTSTREAM_WEBSOCKET_CHUNK_SIZE",
DEFAULT_WEBSOCKET_CHUNK,
)
}
pub fn webtransport_chunk_size() -> usize {
cached_env(
&WEBTRANSPORT_CHUNK,
"LIGHTSTREAM_WEBTRANSPORT_CHUNK_SIZE",
DEFAULT_WEBTRANSPORT_CHUNK,
)
}
pub fn inmemory_chunk_size() -> usize {
cached_env(
&INMEMORY_CHUNK,
"LIGHTSTREAM_INMEMORY_CHUNK_SIZE",
DEFAULT_INMEMORY_CHUNK,
)
}
pub const DEFAULT_ARENA_CAPACITY: usize = 2 * 1024 * 1024 * 1024;
pub fn arena_capacity() -> usize {
cached_env(
&ARENA_CAPACITY,
"LIGHTSTREAM_ARENA_CAPACITY",
DEFAULT_ARENA_CAPACITY,
)
}
pub const DEFAULT_FRAME_ALLOCATION_SIZE: usize = 1024 * 1024;
pub const ARROW_MAGIC_NUMBER_PADDED: &[u8] = b"ARROW1\0\0";
pub const ARROW_MAGIC_NUMBER: &[u8] = b"ARROW1";
pub const FILE_OPENING_MAGIC_LEN: usize = 8;
pub const FILE_CLOSING_MAGIC_LEN: usize = 6;
pub const EOS_MARKER_LEN: usize = 8;
pub const CONTINUATION_MARKER_LEN: usize = 4;
pub const CONTINUATION_SENTINEL: u32 = 0xFFFF_FFFF;
pub const METADATA_SIZE_PREFIX: usize = 4;
pub const PARQUET_MAGIC: &[u8; 4] = b"PAR1";