diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2024-11-14 11:22:15 -0500 |
|---|---|---|
| committer | Sam Anthony <sam@samanthony.xyz> | 2024-11-14 11:22:15 -0500 |
| commit | 38077cf6f25cb345092638fadcc3afce82898936 (patch) | |
| tree | 280dad7f9285bf8c4e376780702e4bb1f071e77a /doc/sequencer.pseudo | |
| parent | 731b77c150b438faeedff5cf5fc63697444ca8dc (diff) | |
| download | soen423-38077cf6f25cb345092638fadcc3afce82898936.zip | |
total-order multicast pseudocode
Diffstat (limited to 'doc/sequencer.pseudo')
| -rw-r--r-- | doc/sequencer.pseudo | 47 |
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++ - } -} |