From 38077cf6f25cb345092638fadcc3afce82898936 Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Thu, 14 Nov 2024 11:22:15 -0500 Subject: total-order multicast pseudocode --- doc/tomulticast.pseudo | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 doc/tomulticast.pseudo (limited to 'doc/tomulticast.pseudo') diff --git a/doc/tomulticast.pseudo b/doc/tomulticast.pseudo new file mode 100644 index 0000000..332ba32 --- /dev/null +++ b/doc/tomulticast.pseudo @@ -0,0 +1,35 @@ +type message struct { + seq int + payload +} + +class sequencer { + var seq = 0 + + // Receive a request from the FE. + // Attach sequence number and multicast to RMs. + on rUnicastReceive(payload) { + rMulticastSend(message{seq, payload}) + seq++ + } +} + +class receiver { + var seq = 0 + var holdback Queue[message] + + // Receive from sequencer. + on rMulticastReceive(m message) { + append(holdback, m) + trydeliver() + } + + trydeliver() { + if t.e. m in holdback s.t. m.seq == seq+1 { + remove(m, holdback) + deliver(m) + seq++ + trydeliver() + } + } +} -- cgit v1.2.3