use std::cell::Cell;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum FleetEndpointMode {
Managed,
StandaloneLocal,
}
thread_local! {
static FLEET_ENDPOINT_MODE: Cell<FleetEndpointMode> =
const { Cell::new(FleetEndpointMode::Managed) };
}
pub struct FleetEndpointModeState;
impl FleetEndpointModeState {
pub fn set(mode: FleetEndpointMode) {
FLEET_ENDPOINT_MODE.set(mode);
}
#[must_use]
pub fn get() -> FleetEndpointMode {
FLEET_ENDPOINT_MODE.get()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn endpoint_mode_defaults_to_managed_and_changes_only_explicitly() {
FleetEndpointModeState::set(FleetEndpointMode::Managed);
assert_eq!(FleetEndpointModeState::get(), FleetEndpointMode::Managed);
FleetEndpointModeState::set(FleetEndpointMode::StandaloneLocal);
assert_eq!(
FleetEndpointModeState::get(),
FleetEndpointMode::StandaloneLocal
);
FleetEndpointModeState::set(FleetEndpointMode::Managed);
}
}