11.11 Escape when walking through a sequence
Two methods are available to do this :
-
With a counter and break statement (e.g. "
i" and "break;")
- With a fix size sequence (e.g. "
uri<2> st_labri;")
1 service foreach_break {
processing {
dialog {
response incoming INVITE() {
5 uri<> students =
<'sip:student.1@labri.fr',
'sip:student.2@labri.fr',
'sip:student.3@labri.fr',
'sip:student.1@inria.fr',
10 'sip:student.2@inria.fr',
'sip:student.3@inria.fr'>;
uri<100> st_inria;
uri<2> st_labri;
15 int i = 0;
if (requestURI == 'sip:students@labri.fr') {
foreach (student in students) {
if (student match ".*@labri\.fr") {
20 push st_labri student;
}
}
return forward st_labri;
}
25 else if (requestURI == 'sip:students@inria.fr') {
foreach (student in students) {
if (student match ".*@inria\.fr") {
push st_inria student;
i = i + 1;
30 }
if (i==2)
break;
}
return forward st_inria;
35 }
return forward;
}
}
}
40 }