diff options
author | Joe George <joe@zeroc.com> | 2015-12-23 14:48:40 -0500 |
---|---|---|
committer | Joe George <joe@zeroc.com> | 2015-12-24 10:01:11 -0500 |
commit | e84da5f580821cae8dab292e19cc1296c07a8ed5 (patch) | |
tree | 1e8783c55c7dccd5adda2b87b47b8a7c118a1147 /cpp/src/Glacier2Lib/SessionHelper.cpp | |
parent | Fixes related to EnableSharedFromThis (diff) | |
download | ice-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.cpp | 23 |
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(), |