The idea is that the user should explicitly drop (*) messages, so we need to deliver by default.
The main issue here is the delivery order! Since we can't deliver more than one message to the same process in a step, how we should choose the order? And the second one, we should deliver until is nothing left?
Regarding delivery order, we could order the available packets by sender and by age (current index - send index), but age only matters if we don't deliver "until no packet is left" in each step.
(*) maybe delay too? 🤔 Although a delay can be achieved by drop and wait the stubborn to resend.
The idea is that the user should explicitly drop (*) messages, so we need to deliver by default. The main issue here is the delivery order! Since we can't deliver more than one message to the same process in a step, how we should choose the order? And the second one, we should deliver until is nothing left?
Regarding delivery order, we could order the available packets by sender and by age (current index - send index), but age only matters if we don't deliver "until no packet is left" in each step.
(*) maybe delay too? 🤔 Although a delay can be achieved by drop and wait the stubborn to resend.