summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/RetryQueue.h
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2014-10-10 12:03:07 +0200
committerBenoit Foucher <benoit@zeroc.com>2014-10-10 12:03:07 +0200
commit570455a381e6620f8ddfcca448559d3fa545ba38 (patch)
treefe3fa45e6a643b473d9370babff6224b1a9d4dcb /cpp/src/Ice/RetryQueue.h
parentFixed ICE-5726: provide deprecated public StringConverterPlugin (diff)
downloadice-570455a381e6620f8ddfcca448559d3fa545ba38.tar.bz2
ice-570455a381e6620f8ddfcca448559d3fa545ba38.tar.xz
ice-570455a381e6620f8ddfcca448559d3fa545ba38.zip
Fixed invocation timeouts/interrupt issues, addded AsyncResult.cancel()
Diffstat (limited to 'cpp/src/Ice/RetryQueue.h')
-rw-r--r--cpp/src/Ice/RetryQueue.h15
1 files changed, 11 insertions, 4 deletions
diff --git a/cpp/src/Ice/RetryQueue.h b/cpp/src/Ice/RetryQueue.h
index 5a0b7cf52a2..71c9c946d8d 100644
--- a/cpp/src/Ice/RetryQueue.h
+++ b/cpp/src/Ice/RetryQueue.h
@@ -16,25 +16,31 @@
#include <Ice/RetryQueueF.h>
#include <Ice/OutgoingAsyncF.h>
#include <Ice/InstanceF.h>
+#include <Ice/RequestHandler.h> // For CancellationHandler
namespace IceInternal
{
-class RetryTask : public IceUtil::TimerTask
+class RetryTask : public IceUtil::TimerTask, public CancellationHandler
{
public:
- RetryTask(const RetryQueuePtr&, const Ice::AsyncResultPtr&);
+ RetryTask(const RetryQueuePtr&, const ProxyOutgoingAsyncBasePtr&);
virtual void runTimerTask();
+
+ virtual void requestCanceled(OutgoingBase*, const Ice::LocalException&);
+ virtual void asyncRequestCanceled(const OutgoingAsyncBasePtr&, const Ice::LocalException&);
+
void destroy();
bool operator<(const RetryTask&) const;
+
private:
const RetryQueuePtr _queue;
- const Ice::AsyncResultPtr _outAsync;
+ const ProxyOutgoingAsyncBasePtr _outAsync;
};
typedef IceUtil::Handle<RetryTask> RetryTaskPtr;
@@ -44,12 +50,13 @@ public:
RetryQueue(const InstancePtr&);
- void add(const Ice::AsyncResultPtr&, int);
+ void add(const ProxyOutgoingAsyncBasePtr&, int);
void destroy();
private:
void remove(const RetryTaskPtr&);
+ bool cancel(const RetryTaskPtr&);
friend class RetryTask;
InstancePtr _instance;