A client sends requests to two different services. Cancel them if a reply is not received from
both within a timeout.
• active
class Service1 {
public: int Operation1();
};
• active
class Service2 {
public: int Operation2();
};
• void Process( active Service1& s1, active Service2& s2, int ms ) {
future<int>
result1 = s1.Operation1();
future<int>
result2 = s2.Operation2();
• wait( (result1
&& result2) || timeout(ms) );
if( result1 && result2 ) {
…
// use result1
and result2
else {
result1.Cancel(); //
cancel both
result2.Cancel();
}
}
•