summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2024-11-09 17:33:53 -0500
committerSam Anthony <sam@samanthony.xyz>2024-11-09 17:33:53 -0500
commit6b21841da65ac163aee4559541f0e70d0ed3517c (patch)
tree84e0d592cc602cb01a3d2f228cfb4223eacadbb4
parentd164f320be094e2348260785386fff0e756d0ec9 (diff)
downloadsoen423-6b21841da65ac163aee4559541f0e70d0ed3517c.zip
sequencer pseudocode: add retransmit() routine to Trans
-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
}