fixed bug in attaching nics to hosts, changed documentation format and generator (buggy but usable)

This commit is contained in:
2025-09-14 00:40:53 -04:00
parent 9ab64e18a4
commit c4141cd683
40 changed files with 5223 additions and 577 deletions

View File

@@ -1,27 +1,49 @@
# core/simulator.h
## Free functions
### `std::numeric_limits<InstanceId>::max();`
### `std::numeric_limits<LinkId>::max();`
## class Rng — public interface
### `Simulator() = default;`
### `static std::pair<InstanceId, Simulator *> create_simulator(InstanceId id);`
### `static Simulator *get_simulator(InstanceId id) noexcept;`
### `Time now() const noexcept;`
### `EventId schedule_at(Time abs_time, F&& f, Args&&... args) { ... }`
### `_event_pq.push(std::move(it));`
### `EventId schedule_after(Time delay, F&& f, Args&&... args) { ... }`
### `bool cancel(EventId id);`
### `bool run_next();`
### `void run_until(Time end_time);`
### `void lock() noexcept;`
### `bool is_locked() const noexcept { ... }`
### `void flush_after(Time grace) noexcept;`
### `Rng* create_rng(std::uint64_t seed);`
### `Rng* get_rng() noexcept;`
### `Rng const* get_rng() const noexcept;`
### `Link* get_link(LinkId id) noexcept;`
### `Link const* get_link(LinkId id) const noexcept;`
## `Simulator::Cmp::operator`
`bool operator()(const Item &a, const Item &b) const noexcept`
## `Simulator::Simulator`
`Simulator() = default`
## `Simulator::cancel`
`bool cancel(EventId id)`
## `Simulator::create_link`
`std::pair<LinkId, Link *> create_link(NetworkNode *a, PortId a_port, NetworkNode *b, PortId b_port, Time latency, double bandwidth_gbps)`
## `Simulator::create_rng`
`Rng *create_rng(std::uint64_t seed)`
## `Simulator::create_simulator`
`static std::pair<InstanceId, Simulator *> create_simulator(InstanceId id)`
## `Simulator::flush_after`
`void flush_after(Time grace) noexcept`
## `Simulator::get_link`
`Link *get_link(LinkId id) noexcept`
## `Simulator::get_link`
`Link const *get_link(LinkId id) const noexcept`
## `Simulator::get_rng`
`Rng *get_rng() noexcept`
## `Simulator::get_rng`
`Rng const *get_rng() const noexcept`
## `Simulator::get_simulator`
`static Simulator *get_simulator(InstanceId id) noexcept`
## `Simulator::is_locked`
`bool is_locked() const noexcept`
## `Simulator::lock`
`void lock() noexcept`
## `Simulator::now`
`Time now() const noexcept`
## `Simulator::run_next`
`bool run_next()`
## `Simulator::run_until`
`void run_until(Time end_time)`
## `Simulator::schedule_after`
`template<class F, class... Args> template<class F, class... Args> EventId schedule_after(Time delay, F&&f, Args&&... args)`
## `Simulator::schedule_at`
`template<class F, class... Args> template<class F, class... Args> EventId schedule_at(Time abs_time, F&&f, Args&&... args)`
## `cancel`
`bool cancel(EventId id);`
## `flush_after`
`void flush_after(Time grace) noexcept;`
## `lock`
`void lock() noexcept;`
## `run_next`
`bool run_next();`
## `run_until`
`void run_until(Time end_time);`