diff options
author | Benoit Foucher <benoit@zeroc.com> | 2014-10-10 12:03:07 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2014-10-10 12:03:07 +0200 |
commit | 570455a381e6620f8ddfcca448559d3fa545ba38 (patch) | |
tree | fe3fa45e6a643b473d9370babff6224b1a9d4dcb /cpp/src/Ice/RetryQueue.h | |
parent | Fixed ICE-5726: provide deprecated public StringConverterPlugin (diff) | |
download | ice-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.h | 15 |
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; |