summaryrefslogtreecommitdiffstats
path: root/doc/sequencer.pseudo
diff options
context:
space:
mode:
Diffstat (limited to 'doc/sequencer.pseudo')
-rw-r--r--doc/sequencer.pseudo47
1 files changed, 0 insertions, 47 deletions
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++
- }
-}