AdvancedTimer.borg
AdvancedTimer.borg
{
`times functie die tijd in seconden weergeeft
times()::
{
t:time();
t[1]+t[2]*60+t[3]*3600
};
`moment van het eerste alarm
firstalarm:0;
resetalarm()::firstalarm:=0;
loweralarm(a)::if ((firstalarm=0) | (aalarms:[];
` wait wordt opgeroepen om de timer te starten
` hier controleren we of hij voor een reeds bestaande tijd
` valt of niet.
wait(s,to,msg,par)::
{
alarmat:times()+s;
alarms:=[[alarmat,to,msg,par],alarms];
loweralarm(alarmat);
checkalarms();
void
};
doalarm(a)::sendmessage(a[2],0,a[2],a[3],a[4]);
docontinue()::agentname->checkalarms();
checkalarms()::
{
now:times();
checkit(lst)::
if (lst ~ empty, empty,
{
alarm:lst[1];
alarmat:alarm[1];
if (alarmat2])
},
{
loweralarm(alarmat);
[alarm,checkit(lst[2])]
})
});
if ((now>firstalarm) & (firstalarm>0),
{
resetalarm();
alarms:=checkit(alarms)
});
if (alarms ~ empty, void, docontinue())
};
example()::
{
wait(10,agent("cubical/Alice"),"display",'--blab--'+eoln);
wait(5,agent("cubical/Bob"),"display",'--blos--'+eoln);
wait(10,agent("cubical/Christine"),"display",'--trog--'+eoln);
wait(3,agent("cubical/Dirk"),"display",'--kroch--'+eoln);
wait(15,agent("cubical/Erica"),"display",'--woch--'+eoln)
};
display("example()"+eoln)
}