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,19 +1,15 @@
# hosts/mgmt_msg.h
## class MgmtMsg — public interface
### `virtual ~MgmtMsg() = default;`
## class HeartbeatMsg — public interface
### `: subscriber_id(sid), status(st), generated_at(t) { ... }`
### `MgmtKind kind() const noexcept override { ... }`
## class JobFinishedMsg — public interface
### `: flow_id(fid), finished_at(t) { ... }`
### `MgmtKind kind() const noexcept override { ... }`
## class EndSimulationMsg — public interface
### `MgmtKind kind() const noexcept override { ... }`
## `EndSimulationMsg::kind`
`MgmtKind kind() const noexcept override`
## `HeartbeatMsg::HeartbeatMsg`
`explicit HeartbeatMsg(NodeId sid, NodeStatus st, Time t) noexcept : subscriber_id(sid), status(st), generated_at(t)`
## `HeartbeatMsg::kind`
`MgmtKind kind() const noexcept override`
## `JobFinishedMsg::JobFinishedMsg`
`explicit JobFinishedMsg(FlowId fid, Time t) noexcept : flow_id(fid), finished_at(t)`
## `JobFinishedMsg::kind`
`MgmtKind kind() const noexcept override`
## `MgmtMsg::kind`
`virtual MgmtKind kind() const noexcept = 0`
## `MgmtMsg::~MgmtMsg`
`virtual ~MgmtMsg() = default`

View File

@@ -1,20 +1,13 @@
# hosts/policies.h
## class PubBasePolicy — public interface
### `virtual ~PubBasePolicy() = default;`
## class PubRRPolicy — public interface
### `: _ranges(std::move(ranges)) { ... }`
### `validate_and_build();`
### `PacketGroups select_multicast_groups(PacketGroups update_groups_mask) override { ... }`
### `for (auto const& r : _ranges) { ... }`
## class SubBasePolicy — public interface
### `virtual ~SubBasePolicy() = default;`
## class SubDummyPolicy — public interface
### `~SubDummyPolicy() override = default;`
## `PubBasePolicy::select_multicast_groups`
`virtual PacketGroups select_multicast_groups(PacketGroups update_groups_mask) = 0`
## `PubBasePolicy::~PubBasePolicy`
`virtual ~PubBasePolicy() = default`
## `PubRRPolicy::PubRRPolicy`
`explicit PubRRPolicy(std::vector<ReplicaRange> ranges) : _ranges(std::move(ranges))`
## `PubRRPolicy::select_multicast_groups`
`PacketGroups select_multicast_groups(PacketGroups update_groups_mask) override`
## `group_present`
`static bool group_present(PacketGroups mask, uint32_t gid) noexcept{`
## `validate_and_build`
`void validate_and_build(){`

View File

@@ -1,10 +1,25 @@
# hosts/publisher.h
## class Publisher — public interface
### `void recv_update(Bytes size, PacketGroups update_groups_mask) noexcept;`
### `void set_status(NodeStatus s, Time new_latency = Time{}) noexcept;`
### `virtual void recv_mgmt_msg(MgmtMsgPtr msg) noexcept override;`
### `virtual void recv_frame(const Packet& frame) override;`
### `uint64_t updates_in() const noexcept { ... }`
### `uint64_t bytes_out() const noexcept { ... }`
## `Publisher::Pending::arm_staging_if_needed`
`void arm_staging_if_needed() noexcept`
## `Publisher::Pending::on_staging_timer`
`void on_staging_timer() noexcept`
## `Publisher::Publisher`
`Publisher(Simulator *sim, NodeId id, Time update_latency_base, std::unique_ptr<PubBasePolicy> policy, Time mgmt_latency) noexcept`
## `Publisher::bytes_out`
`uint64_t bytes_out() const noexcept`
## `Publisher::recv_flow`
`virtual void recv_flow(NodeId src, FlowId flow, FlowPriority prio, Bytes flow_size) override`
## `Publisher::recv_frame`
`virtual void recv_frame(const Packet &frame) override`
## `Publisher::recv_mgmt_msg`
`virtual void recv_mgmt_msg(MgmtMsgPtr msg) noexcept override`
## `Publisher::recv_update`
`void recv_update(Bytes size, PacketGroups update_groups_mask) noexcept`
## `Publisher::set_status`
`void set_status(NodeStatus s, Time new_latency = Time{}) noexcept`
## `Publisher::updates_in`
`uint64_t updates_in() const noexcept`
## `arm_staging_if_needed`
`void arm_staging_if_needed() noexcept;`
## `on_staging_timer`
`void on_staging_timer() noexcept;`

View File

@@ -1,8 +1,19 @@
# hosts/subscriber.h
## class Publisher — public interface
### `virtual void recv_mgmt_msg(MgmtMsgPtr msg) noexcept override;`
### `void recv_frame(const Packet& frame) override;`
### `void set_status(NodeStatus s) noexcept;`
### `void set_publisher(Publisher* p) noexcept { ... }`
## `Subscriber::Subscriber`
`Subscriber(Simulator *sim, NodeId id, Publisher *publisher, std::unique_ptr<SubBasePolicy> policy, Time mgmt_latency, Time heartbeat_period) noexcept`
## `Subscriber::recv_flow`
`void recv_flow(NodeId src, FlowId flow, FlowPriority prio, Bytes flow_size) override`
## `Subscriber::recv_frame`
`void recv_frame(const Packet &frame) override`
## `Subscriber::recv_mgmt_msg`
`virtual void recv_mgmt_msg(MgmtMsgPtr msg) noexcept override`
## `Subscriber::set_publisher`
`void set_publisher(Publisher *p) noexcept`
## `Subscriber::set_status`
`void set_status(NodeStatus s) noexcept`
## `dofs::on_heartbeat_timer`
`void on_heartbeat_timer() noexcept;`
## `dofs::schedule_next_heartbeat`
`void schedule_next_heartbeat(Time delay) noexcept;`
## `dofs::send_job_finished`
`void send_job_finished(FlowId flow) noexcept;`