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/sequencer.pseudo | 47 ----------------------------------------------- 1 file changed, 47 deletions(-) delete mode 100644 doc/sequencer.pseudo (limited to 'doc/sequencer.pseudo') diff --git a/doc/sequencer.pseudo b/doc/sequencer.pseudo deleted file mode 100644 index f511eee..0000000 --- a/doc/sequencer.pseudo +++ /dev/null @@ -1,47 +0,0 @@ -// Sequencer based on "Distributed Systems: Concepts and Design" 5e, Coulouris et -// al. (2012) pp. 654-655. Depends on reliable multicast, implemented here as the -// Trans protocol. - -type dataMsg struct { - id int - data -} - -type orderMsg struct { - id int - seq int -} - -class groupMember { - seq := 0 - holdback := new Queue[dataMsg] - deliver := new Queue[dataMsg] - rMulticast := new Trans - - multicast(m dataMsg) { - rMulticast.send(m) - } - - on rMulticast.recv(m dataMsg) { - holdback.enqueue(m) - } - - on rMulticast.recv(m orderMsg) { - wait until m.id in holdback && seq == m.seq - data := delete(m.id, holdback) - deliver.enqueue(data) - seq++ - } -} - -// Sequencer is also a member of the multicast group. -class sequencer { - seq := 0 - rMulticast := new Trans - - on rMulticast.recv(m dataMsg) { - order := orderMsg{m.id, seq} - rMulticast.send(order) - seq++ - } -} -- cgit v1.2.3