In this problem set, you will be asked to implement a simplified multicasting protocol using CSP. In this system there are three types of processes: a single Sender process, a single Multicast process, and n Receiver processes. The simplified protocol has three required properties:
A. each message sent by the Sender process is delivered exactly once to all Receiver processes.
B. the Sender is not allowed to present to the Multicast process send a second message until the the previous message has been received by all receivers.
C. a Receiver process ready to receive its copy of the
message should not be blocked if the message is available at the Multicast
process and no other Receiver process is ready to receive its copy of the
message.
(a) (3 points). Suppose that the Multicast process were implemented as
shown below. Which of the three requirements does this implementation
satsify? Which does it not satisfy? Explain you answer.
Multicast::*[ Sender?msg --> i: integer; i=1; *[i<=n --> Receiver(i)!msg; i := i+1 ]](b) (7 points). Show the CSP code for the Sender, Multicast, and Receiver processes which together satisfy the three properties given above. Be sure that you have considered all of the conditions necessary to implement a system in which the sender sends more than one message. You are allowed to introduce new types of processes.