# network/link.h
## `Link::Link`
`Link(Simulator *const sim, LinkId id, NetworkNode *a, PortId a_port, NetworkNode *b, PortId b_port, Time latency, double bandwidth_gbps) noexcept`
## `Link::bandwidth_gbps`
`double bandwidth_gbps() const noexcept`
## `Link::dst_id`
`NodeId dst_id() const noexcept`
## `Link::dst_port`
`PortId dst_port() const noexcept`
## `Link::id`
`LinkId id() const noexcept`
## `Link::next_available`
`Time next_available(NodeId sender) const noexcept`
## `Link::propagation_latency`
`Time propagation_latency() const noexcept`
## `Link::reserve`
`std::optional<Reservation> reserve(Bytes bytes, NodeId sender) noexcept`
## `Link::schedule_delivery_after`
`void schedule_delivery_after(Packet &pkt, NodeId caller, Time after)`
## `Link::send_pkt`
`void send_pkt(Packet &pkt, NodeId caller)`
## `Link::serialization_time`
`Time serialization_time(Bytes bytes) const noexcept`
## `Link::serialization_time`
`static Time serialization_time(Bytes bytes, double gbps) noexcept`
## `Link::set_status`
`void set_status(LinkStatus s, Time new_latency = Time(0), double new_bandwidth_gbps = 0.0)`
## `Link::src_id`
`NodeId src_id() const noexcept`
## `Link::src_port`
`PortId src_port() const noexcept`
## `Link::status`
`LinkStatus status() const noexcept`
## `serialization_time`
`static Time serialization_time(Bytes bytes, double gbps) noexcept;`
## `set_status`
`void set_status(LinkStatus s, Time new_latency = Time(0), double new_bandwidth_gbps = 0.0);`