diff options
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++ - } -} |