summaryrefslogtreecommitdiff
path: root/cpp/src/Glacier2Lib/Application.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Glacier2Lib/Application.cpp')
-rw-r--r--cpp/src/Glacier2Lib/Application.cpp66
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);