summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/trans.pseudo12
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
}