© Egon Börger: Introduction to Async ASMs
21
Enquire  º forall s ÎSlave   s.asked := true
Master/Slave Agreement ASMs
OrderOrCancel º
clear answer
if for some s ÎSlave   s.answer = refuse
then order:=cancel
else order:=job
Answers Arrived   º  forall s ÎSlave    
s.answer Î {accept, refuse}
idle
waiting
For
Answer
Answers
Arrived
OrderOrCancel
Enquire
Answer º if asked then 
choose r Î {accept, refuse}
answer:=r
asked:=false
OrderArrived  º order Î { job, cancel }
idle
waiting
For
Order
Answer
order
= job
Order
Arrived
busy
no
yes
done