Sign in

    weopqrst/moonroll/sim_net does not have a README file

    pub(all) struct Link {
    delay : Int
    jitter : Int
    loss_pct : Int
    reorder_pct : Int
    seed : UInt64
    }

    链路参数。时间单位是「帧」(逻辑 tick),60fps 下 1 帧约 16.7ms。

    Link::new

    fn Link::new(delay : Int, jitter : Int, loss_pct : Int, reorder_pct : Int, seed : UInt64) -> Link

    NetSim

    pub struct NetSim {
    link : Link
    seed : UInt64
    queue : Array[Packet]
    delivered : Int
    dropped : Int
    }

    确定性链路:同 seed、同发送序列 -> 同到达序列。

    NetSim::delivered

    fn NetSim::delivered(self : NetSim) -> Int

    NetSim::dropped

    fn NetSim::dropped(self : NetSim) -> Int

    NetSim::in_flight

    fn NetSim::in_flight(self : NetSim) -> Int

    NetSim::new

    fn NetSim::new(link : Link) -> NetSim

    NetSim::recv

    fn NetSim::recv(self : NetSim, now : Int) -> Array[Bytes]

    取出 now 时刻已到达的包,按到达时间升序返回(模拟乱序)。

    NetSim::send

    fn NetSim::send(self : NetSim, now : Int, payload : Bytes) -> Unit

    在 now 时刻发出一个包。可能被丢弃,否则按 delay + jitter 到达。

    Packet

    type Packet

    Source Files