Routing events for request-response behavior
The events:
event Request { integer requestId; ... }
event Response { integer requestId; ... }
The monitors:
monitor Client {
action doWork() {
//do some processing
...
integer id := integer.getUnique();
route Request(id, ... );
Response r;
on Response(requestId=id):r {
// continue processing
...
// Beware! Any code here will execute immediately
// (before processing the response)
}
}
monitor Server {
action processRequests() {
Request r;
on all Request():r {
// evaluate response
route Response(r.id,...);
}
}
}