diff options
Diffstat (limited to 'cpp/src/Glacier2Lib/Application.cpp')
-rw-r--r-- | cpp/src/Glacier2Lib/Application.cpp | 66 |
1 files changed, 6 insertions, 60 deletions
diff --git a/cpp/src/Glacier2Lib/Application.cpp b/cpp/src/Glacier2Lib/Application.cpp index 637032959ea..2d6d28e4474 100644 --- a/cpp/src/Glacier2Lib/Application.cpp +++ b/cpp/src/Glacier2Lib/Application.cpp @@ -23,50 +23,6 @@ string Glacier2::Application::_category; namespace { -class SessionRefreshTask : public IceUtil::TimerTask -{ - -public: - - SessionRefreshTask(Glacier2::Application* app, const Glacier2::RouterPrx& router) : - _app(app), - _router(router) - { - _callback = Glacier2::newCallback_Router_refreshSession(this, &SessionRefreshTask::exception); - } - - void - exception(const Ice::Exception&) - { - // - // Here the session has been destroyed. Notify the application that the - // session has been destroyed. - // - _app->sessionDestroyed(); - } - - virtual void - runTimerTask() - { - try - { - _router->begin_refreshSession(_callback); - } - catch(const Ice::CommunicatorDestroyedException&) - { - // - // AMI requests can raise CommunicatorDestroyedException directly. - // - } - } - -private: - - Glacier2::Application* _app; - Glacier2::RouterPrx _router; - Glacier2::Callback_Router_refreshSessionPtr _callback; -}; - class ConnectionCallbackI : public Ice::ConnectionCallback { public: @@ -230,7 +186,7 @@ Glacier2::Application::doMain(Ice::StringSeq& args, const Ice::InitializationDat if(_createdSession) { - int acmTimeout = 0; + Ice::Int acmTimeout = 0; try { acmTimeout = _router->getACMTimeout(); @@ -238,6 +194,11 @@ Glacier2::Application::doMain(Ice::StringSeq& args, const Ice::InitializationDat catch(const Ice::OperationNotExistException&) { } + if(acmTimeout <= 0) + { + acmTimeout = static_cast<Ice::Int>(_router->getSessionTimeout()); + } + if(acmTimeout > 0) { Ice::ConnectionPtr connection = _router->ice_getCachedConnection(); @@ -245,21 +206,6 @@ Glacier2::Application::doMain(Ice::StringSeq& args, const Ice::InitializationDat connection->setACM(acmTimeout, IceUtil::None, Ice::HeartbeatAlways); connection->setCallback(new ConnectionCallbackI(this)); } - else - { - IceUtil::Int64 sessionTimeout = _router->getSessionTimeout(); - if(sessionTimeout > 0) - { - // - // Create a ping timer task. The task itself doesn't - // need to be canceled as the communicator is destroyed - // at the end. - // - IceUtil::TimerPtr timer = IceInternal::getInstanceTimer(communicator()); - timer->scheduleRepeated(new SessionRefreshTask(this, _router), - IceUtil::Time::seconds(sessionTimeout/2)); - } - } _category = _router->getCategoryForClient(); IceUtilInternal::ArgVector a(args); |