1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0
//! Discrete-event simulation transport for Velo.
//!
//! Run velo instances under virtual time in a single process, communicating
//! through a simulated network fabric with configurable delays and congestion.
//!
//! # Architecture
//!
//! - [`SimFabric`] owns the network model and all in-flight transfer state
//! - [`SimTransport`] implements the [`Transport`](crate::transports::Transport) trait,
//! routing messages through the fabric's DES queue
//! - [`SimDiscovery`] implements [`PeerDiscovery`](crate::discovery::PeerDiscovery)
//! with an in-memory registry
//! - [`NetworkModel`] is a pluggable trait; [`BisectionBandwidth`] is the default
//!
//! # Example
//!
//! ```ignore
//! use loom_rs::sim::SimulationRuntime;
//! use crate::simulation::{SimFabric, SimTransport, SimDiscovery, BisectionBandwidth};
//!
//! let mut sim = SimulationRuntime::new()?;
//! let handle = sim.handle();
//! let fabric = Arc::new(SimFabric::new(handle, BisectionBandwidth::default()));
//! let discovery = Arc::new(SimDiscovery::new(fabric.clone()));
//!
//! // Build velo instances with SimTransport and SimDiscovery
//! // ...
//! ```
pub use SimDiscovery;
pub use SimFabric;
pub use ;
pub use SimTransport;