95 lines
No EOL
1.7 KiB
Java
Executable file
95 lines
No EOL
1.7 KiB
Java
Executable file
process vassoio{
|
|
int b = 0;
|
|
boolean attesaPiero = false;
|
|
entry piero_rosa(in String inMess, out String outMess);
|
|
|
|
call mario.friggi(b);
|
|
b = 30;
|
|
while(true){
|
|
accept piero_rosa(in String inMess, out String outMess)
|
|
{
|
|
if(inMess=="piero"){
|
|
b--;
|
|
if(b==0){
|
|
outMess = "finiti";
|
|
attesaPiero = true;
|
|
call clock.setTimer(0);
|
|
}
|
|
else{
|
|
outMess = "non finiti";
|
|
}
|
|
}
|
|
else if(inMess=="rosa"){
|
|
call mario.friggi(b);
|
|
b = 30;
|
|
if (attesaPiero) {
|
|
attesaPiero = false;
|
|
call Piero.riprendi();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
process Mario{
|
|
entry friggi(in int b_rimasti);
|
|
while(true){
|
|
accept friggi(in int b_rim)
|
|
{
|
|
if(b_rim>0)
|
|
<butta>
|
|
<friggi>
|
|
call clock.setTimer(60);
|
|
}
|
|
}
|
|
}
|
|
|
|
process Piero{
|
|
entry riprendi();
|
|
String mess;
|
|
|
|
while(true){
|
|
<attendi clienti>
|
|
call vassoio.piero_rosa("piero");
|
|
<servo cliente>
|
|
if (mess == "finiti") {
|
|
accept riprendi()
|
|
}
|
|
}
|
|
}
|
|
|
|
process Rosa{
|
|
while(true){
|
|
call clock.waitTimer();
|
|
call vassoio.piero_rosa("rosa");
|
|
}
|
|
}
|
|
|
|
process Clock{
|
|
entry waitTimer();
|
|
entry setTimer(in int min);
|
|
entry tick;
|
|
int tempo = 0;
|
|
int sveglia = 0;
|
|
do
|
|
[] accept tick -> tempo++; // Incrementa il tempo
|
|
[] accept setTimer(in int min)
|
|
{
|
|
if(min == 0){ // Se Piero ha fatto una setTimer(0)..
|
|
accept waitTimer() // ..allora sveglio Rosa dalla waitTimer()
|
|
}
|
|
else{
|
|
sveglia = tempo + min; // Altrimenti setto normalmente la sveglia
|
|
}
|
|
}
|
|
[](tempo == sveglia); accept waitTimer() // Se è il momento di svegliare Rosa accettiamo la sua call
|
|
od
|
|
}
|
|
|
|
|
|
process Tempo{
|
|
while(true){
|
|
<aspetta un secondo>
|
|
call clock.tick;
|
|
}
|
|
} |