diff options
author | Benoit Foucher <benoit@zeroc.com> | 2014-05-23 11:59:44 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2014-05-23 11:59:44 +0200 |
commit | d81701ca8182942b7936f9fd84a019b695e9c890 (patch) | |
tree | dc036c9d701fbbe1afad67782bd78572c0f61974 /cpp/src/IceGrid/Client.cpp | |
parent | Fixed bug ICE-5543: stringToIdentity bug with escaped escapes (diff) | |
download | ice-d81701ca8182942b7936f9fd84a019b695e9c890.tar.bz2 ice-d81701ca8182942b7936f9fd84a019b695e9c890.tar.xz ice-d81701ca8182942b7936f9fd84a019b695e9c890.zip |
Added support for invocation timeouts and ACM heartbeats
Diffstat (limited to 'cpp/src/IceGrid/Client.cpp')
-rw-r--r-- | cpp/src/IceGrid/Client.cpp | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/cpp/src/IceGrid/Client.cpp b/cpp/src/IceGrid/Client.cpp index 221f9ecc45a..ed91c31f728 100644 --- a/cpp/src/IceGrid/Client.cpp +++ b/cpp/src/IceGrid/Client.cpp @@ -420,7 +420,8 @@ Client::run(StringSeq& originalArgs) int status = EXIT_SUCCESS; try { - int timeout; + int sessionTimeout; + int acmTimeout = 0; if(communicator()->getDefaultRouter()) { try @@ -488,7 +489,14 @@ Client::run(StringSeq& originalArgs) return EXIT_FAILURE; } } - timeout = static_cast<int>(router->getSessionTimeout()); + sessionTimeout = static_cast<int>(router->getSessionTimeout()); + try + { + acmTimeout = router->getACMTimeout(); + } + catch(const Ice::OperationNotExistException&) + { + } } else if(communicator()->getDefaultLocator()) { @@ -630,7 +638,14 @@ Client::run(StringSeq& originalArgs) } } - timeout = registry->getSessionTimeout(); + sessionTimeout = registry->getSessionTimeout(); + try + { + acmTimeout = registry->getACMTimeout(); + } + catch(const Ice::OperationNotExistException&) + { + } } else // No default locator or router set. { @@ -639,9 +654,13 @@ Client::run(StringSeq& originalArgs) return EXIT_FAILURE; } - if(timeout > 0) + if(acmTimeout > 0) + { + session->ice_getConnection()->setACM(acmTimeout, IceUtil::None, Ice::HeartbeatAlways); + } + else if(sessionTimeout > 0) { - keepAlive = new SessionKeepAliveThread(session, timeout / 2); + keepAlive = new SessionKeepAliveThread(session, sessionTimeout / 2); keepAlive->start(); } |