diff options
author | Jose <jose@zeroc.com> | 2015-12-15 20:09:35 +0100 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2015-12-15 20:09:35 +0100 |
commit | f72ebccfa916f610165de8ca48d4ef86b6b2330d (patch) | |
tree | 8b58d931f9624a0bb1ebcbae5e1f1b76052e3317 /cpp/src | |
parent | C++11 dispatcher test fixes (diff) | |
download | ice-f72ebccfa916f610165de8ca48d4ef86b6b2330d.tar.bz2 ice-f72ebccfa916f610165de8ca48d4ef86b6b2330d.tar.xz ice-f72ebccfa916f610165de8ca48d4ef86b6b2330d.zip |
C++11 mapping Glacier2Lib updates
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/Glacier2Lib/Application.cpp | 10 | ||||
-rw-r--r-- | cpp/src/Glacier2Lib/NullPermissionsVerifier.cpp | 17 | ||||
-rw-r--r-- | cpp/src/Glacier2Lib/SessionHelper.cpp | 120 |
3 files changed, 93 insertions, 54 deletions
diff --git a/cpp/src/Glacier2Lib/Application.cpp b/cpp/src/Glacier2Lib/Application.cpp index 2d6d28e4474..729f90aa21f 100644 --- a/cpp/src/Glacier2Lib/Application.cpp +++ b/cpp/src/Glacier2Lib/Application.cpp @@ -15,8 +15,8 @@ using namespace std; using namespace Ice; Ice::ObjectAdapterPtr Glacier2::Application::_adapter; -Glacier2::RouterPrx Glacier2::Application::_router; -Glacier2::SessionPrx Glacier2::Application::_session; +Glacier2::RouterPrxPtr Glacier2::Application::_router; +Glacier2::SessionPrxPtr Glacier2::Application::_session; bool Glacier2::Application::_createdSession = false; string Glacier2::Application::_category; @@ -85,7 +85,7 @@ Glacier2::Application::objectAdapter() return _adapter; } -Ice::ObjectPrx +Ice::ObjectPrxPtr Glacier2::Application::addWithUUID(const Ice::ObjectPtr& servant) { return objectAdapter()->add(servant, createCallbackIdentity(IceUtil::generateUUID())); @@ -153,7 +153,7 @@ Glacier2::Application::doMain(Ice::StringSeq& args, const Ice::InitializationDat try { IceInternal::Application::_communicator = Ice::initialize(args, initData); - _router = Glacier2::RouterPrx::uncheckedCast(communicator()->getDefaultRouter()); + _router = ICE_UNCHECKED_CAST(Glacier2::RouterPrx, communicator()->getDefaultRouter()); if(!_router) { @@ -204,7 +204,7 @@ Glacier2::Application::doMain(Ice::StringSeq& args, const Ice::InitializationDat Ice::ConnectionPtr connection = _router->ice_getCachedConnection(); assert(connection); connection->setACM(acmTimeout, IceUtil::None, Ice::HeartbeatAlways); - connection->setCallback(new ConnectionCallbackI(this)); + connection->setCallback(ICE_MAKE_SHARED(ConnectionCallbackI, this)); } _category = _router->getCategoryForClient(); diff --git a/cpp/src/Glacier2Lib/NullPermissionsVerifier.cpp b/cpp/src/Glacier2Lib/NullPermissionsVerifier.cpp index e538bf2403d..25e85ccd4bc 100644 --- a/cpp/src/Glacier2Lib/NullPermissionsVerifier.cpp +++ b/cpp/src/Glacier2Lib/NullPermissionsVerifier.cpp @@ -21,7 +21,11 @@ class NullPermissionsVerifier : public Glacier2::PermissionsVerifier { public: +#ifdef ICE_CPP11_MAPPING + bool checkPermissions(string, string, string&, const Current&) const +#else bool checkPermissions(const string&, const string&, string&, const Current&) const +#endif { return true; } @@ -31,8 +35,13 @@ class NullSSLPermissionsVerifier : public Glacier2::SSLPermissionsVerifier { public: +#ifdef ICE_CPP11_MAPPING virtual bool - authorize(const Glacier2::SSLInfo&, std::string&, const Ice::Current&) const + authorize(Glacier2::SSLInfo, string&, const Ice::Current&) const +#else + virtual bool + authorize(const Glacier2::SSLInfo&, string&, const Ice::Current&) const +#endif { return true; } @@ -91,7 +100,7 @@ Init::checkPermissionVerifier(const string& val) // Check if it's in proxy format try { - ObjectPrx prx = _communicator->stringToProxy(val); + ObjectPrxPtr prx = _communicator->stringToProxy(val); if(prx->ice_getIdentity() == _nullPVId || prx->ice_getIdentity() == _nullSSLPVId) { createObjects(); @@ -124,8 +133,8 @@ Init::createObjects() if(!_adapter) { _adapter = _communicator->createObjectAdapter(""); // colloc-only adapter - _adapter->add(new NullPermissionsVerifier, _nullPVId); - _adapter->add(new NullSSLPermissionsVerifier, _nullSSLPVId); + _adapter->add(ICE_MAKE_SHARED(NullPermissionsVerifier), _nullPVId); + _adapter->add(ICE_MAKE_SHARED(NullSSLPermissionsVerifier), _nullSSLPVId); _adapter->activate(); } } diff --git a/cpp/src/Glacier2Lib/SessionHelper.cpp b/cpp/src/Glacier2Lib/SessionHelper.cpp index 1f4f4781de7..7563520329b 100644 --- a/cpp/src/Glacier2Lib/SessionHelper.cpp +++ b/cpp/src/Glacier2Lib/SessionHelper.cpp @@ -20,7 +20,7 @@ using namespace std; namespace Glacier2 { -class SessionThreadCallback : public IceUtil::Shared +class SessionThreadCallback : public ICE_ENABLE_SHARED_FROM_THIS(SessionThreadCallback) { public: @@ -38,21 +38,24 @@ private: const Glacier2::SessionFactoryHelperPtr _factory; }; -typedef IceUtil::Handle<SessionThreadCallback> SessionThreadCallbackPtr; +ICE_DEFINE_PTR(SessionThreadCallbackPtr, SessionThreadCallback); }; namespace { -class ConnectStrategy : public Ice::LocalObject +class ConnectStrategy +#ifndef ICE_CPP11_MAPPING + : public Ice::LocalObject +#endif { public: - virtual Glacier2::SessionPrx connect(const Glacier2::RouterPrx& router) = 0; + virtual Glacier2::SessionPrxPtr connect(const Glacier2::RouterPrxPtr& router) = 0; }; -typedef IceUtil::Handle< ConnectStrategy> ConnectStrategyPtr; +ICE_DEFINE_PTR(ConnectStrategyPtr, ConnectStrategy); class Disconnected : public Ice::DispatcherCall { @@ -80,6 +83,9 @@ private: }; class SessionHelperI : public Glacier2::SessionHelper +#ifdef ICE_CPP11_MAPPING + , public enable_shared_from_this<SessionHelperI> +#endif { public: @@ -89,8 +95,8 @@ public: void destroy(); Ice::CommunicatorPtr communicator() const; std::string categoryForClient() const; - Ice::ObjectPrx addWithUUID(const Ice::ObjectPtr&); - Glacier2::SessionPrx session() const; + Ice::ObjectPrxPtr addWithUUID(const Ice::ObjectPtr&); + Glacier2::SessionPrxPtr session() const; bool isConnected() const; Ice::ObjectAdapterPtr objectAdapter(); @@ -103,7 +109,7 @@ public: private: Ice::ObjectAdapterPtr internalObjectAdapter(); - void connected(const Glacier2::RouterPrx&, const Glacier2::SessionPrx&); + void connected(const Glacier2::RouterPrxPtr&, const Glacier2::SessionPrxPtr&); void destroyInternal(const Ice::DispatcherCallPtr&); void destroyCommunicator(); void connectFailed(); @@ -118,8 +124,8 @@ private: IceUtil::Mutex _mutex; Ice::CommunicatorPtr _communicator; Ice::ObjectAdapterPtr _adapter; - Glacier2::RouterPrx _router; - Glacier2::SessionPrx _session; + Glacier2::RouterPrxPtr _router; + Glacier2::SessionPrxPtr _session; std::string _category; bool _connected; bool _destroy; @@ -129,7 +135,7 @@ private: const string _finder; const bool _useCallbacks; }; -typedef IceUtil::Handle<SessionHelperI> SessionHelperIPtr; +ICE_DEFINE_PTR(SessionHelperIPtr, SessionHelperI); class DestroyInternal : public IceUtil::Thread { @@ -221,17 +227,17 @@ SessionHelperI::destroy() // We destroy the communicator to trigger the immediate // failure of the connection establishment. // - IceUtil::ThreadPtr destroyCommunicator = new DestroyCommunicator(this); - _threadCB = 0; + IceUtil::ThreadPtr destroyCommunicator = new DestroyCommunicator(ICE_SHARED_FROM_THIS); + _threadCB = ICE_NULLPTR; destroyCommunicator->start(); return; } - IceUtil::ThreadPtr destroyInternal = new DestroyInternal(this, _threadCB, _callback); + IceUtil::ThreadPtr destroyInternal = new DestroyInternal(ICE_SHARED_FROM_THIS, _threadCB, _callback); - _session = 0; + _session = ICE_NULLPTR; _connected = false; - _threadCB = 0; + _threadCB = ICE_NULLPTR; // // Run destroyInternal in a thread because it makes remote invocations. @@ -257,7 +263,7 @@ SessionHelperI::categoryForClient() const return _category; } -Ice::ObjectPrx +Ice::ObjectPrxPtr SessionHelperI::addWithUUID(const Ice::ObjectPtr& servant) { IceUtil::Mutex::Lock sync(_mutex); @@ -271,7 +277,7 @@ SessionHelperI::addWithUUID(const Ice::ObjectPtr& servant) return internalObjectAdapter()->add(servant, id); } -Glacier2::SessionPrx +Glacier2::SessionPrxPtr SessionHelperI::session() const { IceUtil::Mutex::Lock sync(_mutex); @@ -336,8 +342,8 @@ public: { } - virtual Glacier2::SessionPrx - connect(const Glacier2::RouterPrx& router) + virtual Glacier2::SessionPrxPtr + connect(const Glacier2::RouterPrxPtr& router) { return router->createSessionFromSecureConnection(_context); } @@ -359,8 +365,8 @@ public: { } - virtual Glacier2::SessionPrx - connect(const Glacier2::RouterPrx& router) + virtual Glacier2::SessionPrxPtr + connect(const Glacier2::RouterPrxPtr& router) { return router->createSession(_user, _password, _context); } @@ -378,14 +384,14 @@ void SessionHelperI::connect(const map<string, string>& context) { IceUtil::Mutex::Lock sync(_mutex); - connectImpl(new ConnectStrategySecureConnection(context)); + connectImpl(ICE_MAKE_SHARED(ConnectStrategySecureConnection, context)); } void SessionHelperI::connect(const string& user, const string& password, const map<string, string>& context) { IceUtil::Mutex::Lock sync(_mutex); - connectImpl(new ConnectStrategyUserPassword(user, password, context)); + connectImpl(ICE_MAKE_SHARED(ConnectStrategyUserPassword, user, password, context)); } void @@ -393,11 +399,11 @@ SessionHelperI::destroyInternal(const Ice::DispatcherCallPtr& disconnected) { assert(_destroy); Ice::CommunicatorPtr communicator; - Glacier2::RouterPrx router; + Glacier2::RouterPrxPtr router; { IceUtil::Mutex::Lock sync(_mutex); router = _router; - _router = 0; + _router = ICE_NULLPTR; _connected = false; communicator = _communicator; @@ -443,9 +449,9 @@ SessionHelperI::destroyInternal(const Ice::DispatcherCallPtr& disconnected) catch(...) { } - communicator = 0; + communicator = ICE_NULLPTR; } - dispatchCallback(disconnected, 0); + dispatchCallback(disconnected, ICE_NULLPTR); } void @@ -466,7 +472,7 @@ SessionHelperI::destroyCommunicator() catch(...) { } - communicator = 0; + communicator = ICE_NULLPTR; } } @@ -567,8 +573,8 @@ public: { if(!_communicator->getDefaultRouter()) { - Ice::RouterFinderPrx finder = - Ice::RouterFinderPrx::uncheckedCast(_communicator->stringToProxy(_finder)); + Ice::RouterFinderPrxPtr finder = + ICE_UNCHECKED_CAST(Ice::RouterFinderPrx, _communicator->stringToProxy(_finder)); try { _communicator->setDefaultRouter(finder->getRouter()); @@ -587,12 +593,12 @@ public: Ice::Identity ident; ident.category = "Glacier2"; ident.name = "router"; - _communicator->setDefaultRouter(Ice::RouterPrx::uncheckedCast(finder->ice_identity(ident))); + _communicator->setDefaultRouter(ICE_UNCHECKED_CAST(Ice::RouterPrx, finder->ice_identity(ident))); } } _session->dispatchCallbackAndWait(new CreatedCommunicator(_callback, _session), 0); - Glacier2::RouterPrx routerPrx = Glacier2::RouterPrx::uncheckedCast(_communicator->getDefaultRouter()); - Glacier2::SessionPrx session = _factory->connect(routerPrx); + Glacier2::RouterPrxPtr routerPrx = ICE_UNCHECKED_CAST(Glacier2::RouterPrx, _communicator->getDefaultRouter()); + Glacier2::SessionPrxPtr session = _factory->connect(routerPrx); _session->connected(routerPrx, session); } catch(const Ice::Exception& ex) @@ -636,7 +642,7 @@ public: virtual void run() { _session->dispatchCallback(_call, _conn); - _session = 0; + _session = ICE_NULLPTR; } private: @@ -660,13 +666,13 @@ SessionHelperI::connectImpl(const ConnectStrategyPtr& factory) catch(const Ice::LocalException& ex) { _destroy = true; - IceUtil::ThreadPtr thread = new DispatchCallThread(this, new ConnectFailed(_callback, this, ex), 0); + IceUtil::ThreadPtr thread = new DispatchCallThread(ICE_SHARED_FROM_THIS, new ConnectFailed(_callback, ICE_SHARED_FROM_THIS, ex), 0); _threadCB->add(this, thread); thread->start(); return; } - IceUtil::ThreadPtr thread = new ConnectThread(_callback, this, factory, _communicator, _finder); + IceUtil::ThreadPtr thread = new ConnectThread(_callback, ICE_SHARED_FROM_THIS, factory, _communicator, _finder); _threadCB->add(this, thread); thread->start(); } @@ -731,7 +737,7 @@ private: } void -SessionHelperI::connected(const Glacier2::RouterPrx& router, const Glacier2::SessionPrx& session) +SessionHelperI::connected(const Glacier2::RouterPrxPtr& router, const Glacier2::SessionPrxPtr& session) { // // Remote invocation should be done without acquiring a mutex lock. @@ -789,7 +795,7 @@ SessionHelperI::connected(const Glacier2::RouterPrx& router, const Glacier2::Ses Ice::ConnectionPtr connection = _router->ice_getCachedConnection(); assert(connection); connection->setACM(acmTimeout, IceUtil::None, Ice::HeartbeatAlways); - connection->setCallback(new ConnectionCallbackI(this)); + connection->setCallback(ICE_MAKE_SHARED(ConnectionCallbackI, ICE_SHARED_FROM_THIS)); } } } @@ -800,11 +806,11 @@ SessionHelperI::connected(const Glacier2::RouterPrx& router, const Glacier2::Ses // connected() is only called from the ConnectThread so it is ok to // call destroyInternal here. // - destroyInternal(new Disconnected(this, _callback)); + destroyInternal(new Disconnected(ICE_SHARED_FROM_THIS, _callback)); } else { - dispatchCallback(new Connected(_callback, this), conn); + dispatchCallback(new Connected(_callback, ICE_SHARED_FROM_THIS), conn); } } @@ -813,7 +819,15 @@ SessionHelperI::dispatchCallback(const Ice::DispatcherCallPtr& call, const Ice:: { if(_initData.dispatcher) { +#ifdef ICE_CPP11_MAPPING + _initData.dispatcher([call]() + { + call->run(); + }, + conn); +#else _initData.dispatcher->dispatch(call, conn); +#endif } else { @@ -857,7 +871,15 @@ SessionHelperI::dispatchCallbackAndWait(const Ice::DispatcherCallPtr& call, cons { IceUtilInternal::CountDownLatch cdl(1); Ice::DispatcherCallPtr callWait = new DispatcherCallWait(cdl, call); +#ifdef ICE_CPP11_MAPPING + _initData.dispatcher([call]() + { + call->run(); + }, + conn); +#else _initData.dispatcher->dispatch(callWait, conn); +#endif cdl.await(); } else @@ -1096,8 +1118,12 @@ Glacier2::SessionFactoryHelper::connect() map<string, string> context; { IceUtil::Mutex::Lock sync(_mutex); - session = new SessionHelperI(new SessionThreadCallback(this), _callback, createInitData(), - getRouterFinderStr(), _useCallbacks); + session = ICE_MAKE_SHARED(SessionHelperI, + ICE_MAKE_SHARED(SessionThreadCallback, ICE_SHARED_FROM_THIS), + _callback, + createInitData(), + getRouterFinderStr(), + _useCallbacks); context = _context; } session->connect(context); @@ -1111,8 +1137,12 @@ Glacier2::SessionFactoryHelper::connect(const string& user, const string& passw map<string, string> context; { IceUtil::Mutex::Lock sync(_mutex); - session = new SessionHelperI(new SessionThreadCallback(this), _callback, createInitData(), - getRouterFinderStr(), _useCallbacks); + session = ICE_MAKE_SHARED(SessionHelperI, + ICE_MAKE_SHARED(SessionThreadCallback, ICE_SHARED_FROM_THIS), + _callback, + createInitData(), + getRouterFinderStr(), + _useCallbacks); context = _context; } session->connect(user, password, _context); |