summaryrefslogtreecommitdiff
path: root/cpp/src/Glacier2Lib/SessionHelper.cpp
diff options
context:
space:
mode:
authorJoe George <joe@zeroc.com>2015-12-23 14:48:40 -0500
committerJoe George <joe@zeroc.com>2015-12-24 10:01:11 -0500
commite84da5f580821cae8dab292e19cc1296c07a8ed5 (patch)
tree1e8783c55c7dccd5adda2b87b47b8a7c118a1147 /cpp/src/Glacier2Lib/SessionHelper.cpp
parentFixes related to EnableSharedFromThis (diff)
downloadice-e84da5f580821cae8dab292e19cc1296c07a8ed5.tar.bz2
ice-e84da5f580821cae8dab292e19cc1296c07a8ed5.tar.xz
ice-e84da5f580821cae8dab292e19cc1296c07a8ed5.zip
ICE-6898 - "Delegate" functions for ACM callbacks
- Add delegate local interfaces CloseCallback and HeartbeatCallback and remove ConnectionCallback. - Replace setCallback by setCloseCallback and setHeartbeatCallback
Diffstat (limited to 'cpp/src/Glacier2Lib/SessionHelper.cpp')
-rw-r--r--cpp/src/Glacier2Lib/SessionHelper.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/cpp/src/Glacier2Lib/SessionHelper.cpp b/cpp/src/Glacier2Lib/SessionHelper.cpp
index 541267fb51f..5ef4a88db88 100644
--- a/cpp/src/Glacier2Lib/SessionHelper.cpp
+++ b/cpp/src/Glacier2Lib/SessionHelper.cpp
@@ -707,16 +707,12 @@ private:
const Glacier2::SessionHelperPtr _session;
};
-class ConnectionCallbackI : public Ice::ConnectionCallback
+#ifndef ICE_CPP11_MAPPING // C++98
+class CloseCallbackI : public Ice::CloseCallback
{
public:
- ConnectionCallbackI(const SessionHelperIPtr& sessionHelper) : _sessionHelper(sessionHelper)
- {
- }
-
- virtual void
- heartbeat(const Ice::ConnectionPtr&)
+ CloseCallbackI(const SessionHelperIPtr& sessionHelper) : _sessionHelper(sessionHelper)
{
}
@@ -730,6 +726,7 @@ private:
SessionHelperIPtr _sessionHelper;
};
+#endif
}
@@ -792,7 +789,15 @@ SessionHelperI::connected(const Glacier2::RouterPrxPtr& router, const Glacier2::
Ice::ConnectionPtr connection = _router->ice_getCachedConnection();
assert(connection);
connection->setACM(acmTimeout, IceUtil::None, Ice::HeartbeatAlways);
- connection->setCallback(ICE_MAKE_SHARED(ConnectionCallbackI, shared_from_this()));
+#ifdef ICE_CPP11_MAPPING
+ auto self(shared_from_this());
+ connection->setCloseCallback([self](const Ice::ConnectionPtr&)
+ {
+ self->destroy();
+ });
+#else
+ connection->setCloseCallback(ICE_MAKE_SHARED(CloseCallbackI, shared_from_this()));
+#endif
}
}
}
@@ -1115,7 +1120,7 @@ Glacier2::SessionFactoryHelper::connect()
map<string, string> context;
{
IceUtil::Mutex::Lock sync(_mutex);
- session = ICE_MAKE_SHARED(SessionHelperI,
+ session = ICE_MAKE_SHARED(SessionHelperI,
ICE_MAKE_SHARED(SessionThreadCallback, shared_from_this()),
_callback,
createInitData(),