diff options
Diffstat (limited to 'doc/trans.pseudo')
| -rw-r--r-- | doc/trans.pseudo | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/doc/trans.pseudo b/doc/trans.pseudo index 405231d..644633a 100644 --- a/doc/trans.pseudo +++ b/doc/trans.pseudo @@ -20,6 +20,7 @@ var ( negativeAcks []mid received []m retransmissions []mid + lastSend time ) send(m) { @@ -27,6 +28,7 @@ send(m) { multicast(pkt) positiveAcks = [] go timeout(m) + lastSend = now() } timeout(m) { @@ -69,6 +71,16 @@ recv(m) { } } +retransmit() { + forever { + wait until (timeSince(lastSend) > threshold) && (len(retransmissions) > 0) + + mid := pop(retransmissions) + m := received[mid] + send(m) + } +} + prune() { // TODO: use Observable Predicate for Delivery } |