void ConnectRequestHandler::asyncRequestCanceled(const OutgoingAsyncBasePtr& outAsync, const Ice::LocalException& ex) { { Lock sync(*this); if(ICE_EXCEPTION_GET(_exception)) { return; // The request has been notified of a failure already. } if(!initialized()) { for(deque<Request>::iterator p = _requests.begin(); p != _requests.end(); ++p) { if(p->outAsync.get() == outAsync.get()) { _requests.erase(p); if(outAsync->completed(ex)) { outAsync->invokeCompletedAsync(); } return; } } } } _connection->asyncRequestCanceled(outAsync, ex); }
void CollocatedRequestHandler::asyncRequestCanceled(const OutgoingAsyncBasePtr& outAsync, const LocalException& ex) { Lock sync(*this); map<OutgoingAsyncBasePtr, Int>::iterator p = _sendAsyncRequests.find(outAsync); if(p != _sendAsyncRequests.end()) { if(p->second > 0) { _asyncRequests.erase(p->second); } _sendAsyncRequests.erase(p); if(outAsync->completed(ex)) { outAsync->invokeCompletedAsync(); } return; } OutgoingAsyncPtr o = OutgoingAsyncPtr::dynamicCast(outAsync); if(o) { for(map<Int, OutgoingAsyncBasePtr>::iterator q = _asyncRequests.begin(); q != _asyncRequests.end(); ++q) { if(q->second.get() == o.get()) { _asyncRequests.erase(q); if(outAsync->completed(ex)) { outAsync->invokeCompletedAsync(); } return; } } } }