120 lines
2.4 KiB
Java
120 lines
2.4 KiB
Java
|
process vassoio{
|
||
|
int b = 0;
|
||
|
port String piero_rosa;
|
||
|
String mess;
|
||
|
port signal rilascio_vassoio;
|
||
|
signal s;
|
||
|
process p;
|
||
|
boolean attesaPiero = false;
|
||
|
|
||
|
send(b) to mario.friggi;
|
||
|
p = receive(s) from rilascio_vassoio;
|
||
|
b = 30;
|
||
|
while(true){
|
||
|
p = receive(mess) from piero_rosa;
|
||
|
if(mess=="piero"){
|
||
|
b--;
|
||
|
if(b==0){
|
||
|
attesaPiero = true;
|
||
|
send("finiti") to p.servi;
|
||
|
send(0) to clock.setTimer;
|
||
|
}
|
||
|
else{
|
||
|
send("non finiti") to p.servi;
|
||
|
}
|
||
|
}
|
||
|
else if(mess=="rosa"){
|
||
|
send(b) to mario.friggi;
|
||
|
p = receive(s) from rilascio_vassoio;
|
||
|
b = 30;
|
||
|
send(s) to rosa.rilascio_rosa;
|
||
|
if(attesaPiero){
|
||
|
attesaPiero = false;
|
||
|
send(s) to Piero.riprendi;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
process Mario{
|
||
|
process p;
|
||
|
signal s;
|
||
|
port int friggi;
|
||
|
int b_rim;
|
||
|
while(true){
|
||
|
p = receive(b_rim) from friggi;
|
||
|
if(b_rim>0)
|
||
|
<butta>
|
||
|
<friggi>
|
||
|
send(60) to clock.setTimer;
|
||
|
send(s) to p.rilascio_vassoio;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
process Piero{
|
||
|
process p;
|
||
|
port signal riprendi;
|
||
|
signal s;
|
||
|
port String servi;
|
||
|
String mess;
|
||
|
while(true){
|
||
|
<attendi clienti>
|
||
|
send("piero") to vassoio.piero_rosa;
|
||
|
p = receive(mess) from servi;
|
||
|
<servo cliente>
|
||
|
if(mess == "finiti"){
|
||
|
p = receive(s) from riprendi;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
process Rosa{
|
||
|
port signal rilascio_rosa;
|
||
|
signal s;
|
||
|
process p;
|
||
|
while(true){
|
||
|
send(s) to clock.waitTimer;
|
||
|
p = receive(s) from rilascio_rosa;
|
||
|
send("rosa") to vassoio.piero_rosa;
|
||
|
p = receive(s) from rilascio_rosa;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
process Clock{
|
||
|
port Signal waitTimer;
|
||
|
port int setTimer;
|
||
|
port Signal tick;
|
||
|
signal s;
|
||
|
process p;
|
||
|
int min;
|
||
|
int tempo = 0;
|
||
|
int sveglia = 0;
|
||
|
boolean inAscolto = false;
|
||
|
do
|
||
|
[] p = receive(s) from tick; -> // Aumenta il tempo e se il timer scade..
|
||
|
tempo++;
|
||
|
if(sveglia == tempo && inAscolto){ // ..se il tempo è uguale alla sveglia e Rosa è sulla receive...
|
||
|
inAscolto = false;
|
||
|
send(s) to rosa.rilascio_rosa; // ..allora sveglia Rosa
|
||
|
sveglia = 0;
|
||
|
}
|
||
|
[] p = receive(min) from setTimer; -> // Viene settato il Timer a zero o a 60
|
||
|
sveglia = tempo + min;
|
||
|
if(sveglia == tempo && inAscolto){ // Se il tempo è uguale alla sveglia e Rosa è sulla receive...
|
||
|
inAscolto = false;
|
||
|
send(s) to rose.rilascio_rosa; // ..llora sveglia Rosa
|
||
|
sveglia = 0;
|
||
|
}
|
||
|
|
||
|
[] p = receive(s) from waitTimer; -> // Si mette Rosa sulla receive accettando la send di waitTimer
|
||
|
inAscolto = true;
|
||
|
od
|
||
|
}
|
||
|
process Tempo{
|
||
|
signal s;
|
||
|
while(true){
|
||
|
<aspetta un secondo>
|
||
|
send(s) to clock.tick;
|
||
|
}
|
||
|
}
|