use std::sync::{Arc, Mutex};
use crate::control::security::audit::AuditLog;
use crate::control::security::buses::{SessionInvalidationBus, UserChangeBus};
use crate::control::security::sessions::SessionRegistry;
pub(super) fn init_security_buses(
audit: Arc<Mutex<AuditLog>>,
session_registry: Arc<SessionRegistry>,
) -> (
SessionInvalidationBus,
UserChangeBus,
tokio::task::JoinHandle<()>,
) {
let (si_bus, si_rx) = SessionInvalidationBus::new();
let (uc_bus, uc_rx) = UserChangeBus::new();
let handle =
crate::control::security::buses::spawn_bus_consumer(si_rx, uc_rx, audit, session_registry);
(si_bus, uc_bus, handle)
}