diff options
Diffstat (limited to 'cpp/src/Ice/RouterInfo.h')
-rw-r--r-- | cpp/src/Ice/RouterInfo.h | 50 |
1 files changed, 31 insertions, 19 deletions
diff --git a/cpp/src/Ice/RouterInfo.h b/cpp/src/Ice/RouterInfo.h index 848cd7e0e04..9f6a1dbfef2 100644 --- a/cpp/src/Ice/RouterInfo.h +++ b/cpp/src/Ice/RouterInfo.h @@ -13,12 +13,13 @@ #include <IceUtil/Shared.h> #include <IceUtil/Mutex.h> #include <Ice/RouterInfoF.h> -#include <Ice/RouterF.h> +#include <Ice/Router.h> #include <Ice/ProxyF.h> #include <Ice/ReferenceF.h> #include <Ice/EndpointIF.h> #include <Ice/BuiltinSequences.h> #include <Ice/Identity.h> +#include <Ice/Comparable.h> #include <set> @@ -37,13 +38,21 @@ public: // Returns router info for a given router. Automatically creates // the router info if it doesn't exist yet. // - RouterInfoPtr get(const Ice::RouterPrx&); - RouterInfoPtr erase(const Ice::RouterPrx&); + RouterInfoPtr get(const Ice::RouterPrxPtr&); + RouterInfoPtr erase(const Ice::RouterPrxPtr&); private: - std::map<Ice::RouterPrx, RouterInfoPtr> _table; - std::map<Ice::RouterPrx, RouterInfoPtr>::iterator _tableHint; +#ifdef ICE_CPP11_MAPPING + using RouterTableMap = std::map<std::shared_ptr<Ice::RouterPrx>, + RouterInfoPtr, + Ice::TargetLess<std::shared_ptr<::Ice::RouterPrx>>>; +#else + typedef std::map<Ice::RouterPrxPtr, RouterInfoPtr> RouterTableMap; +#endif + + RouterTableMap _table; + RouterTableMap::iterator _tableHint; }; class RouterInfo : public IceUtil::Shared, public IceUtil::Mutex @@ -59,16 +68,19 @@ public: }; typedef IceUtil::Handle<GetClientEndpointsCallback> GetClientEndpointsCallbackPtr; - class AddProxyCallback : virtual public IceUtil::Shared + class AddProxyCallback +#ifndef ICE_CPP11_MAPPING + : virtual public IceUtil::Shared +#endif { public: virtual void addedProxy() = 0; virtual void setException(const Ice::LocalException&) = 0; }; - typedef IceUtil::Handle<AddProxyCallback> AddProxyCallbackPtr; + ICE_DEFINE_PTR(AddProxyCallbackPtr, AddProxyCallback); - RouterInfo(const Ice::RouterPrx&); + RouterInfo(const Ice::RouterPrxPtr&); void destroy(); @@ -76,14 +88,14 @@ public: bool operator!=(const RouterInfo&) const; bool operator<(const RouterInfo&) const; - const Ice::RouterPrx& getRouter() const + const Ice::RouterPrxPtr& getRouter() const { // // No mutex lock necessary, _router is immutable. // return _router; } - void getClientProxyResponse(const Ice::ObjectPrx&, const GetClientEndpointsCallbackPtr&); + void getClientProxyResponse(const Ice::ObjectPrxPtr&, const GetClientEndpointsCallbackPtr&); void getClientProxyException(const Ice::Exception&, const GetClientEndpointsCallbackPtr&); std::vector<EndpointIPtr> getClientEndpoints(); void getClientEndpoints(const GetClientEndpointsCallbackPtr&); @@ -93,7 +105,7 @@ public: { public: - AddProxyCookie(const AddProxyCallbackPtr cb, const Ice::ObjectPrx& proxy) : + AddProxyCookie(const AddProxyCallbackPtr cb, const Ice::ObjectPrxPtr& proxy) : _cb(cb), _proxy(proxy) { @@ -104,7 +116,7 @@ public: return _cb; } - Ice::ObjectPrx proxy() const + Ice::ObjectPrxPtr proxy() const { return _proxy; } @@ -112,14 +124,14 @@ public: private: const AddProxyCallbackPtr _cb; - const Ice::ObjectPrx _proxy; + const Ice::ObjectPrxPtr _proxy; }; typedef IceUtil::Handle<AddProxyCookie> AddProxyCookiePtr; void addProxyResponse(const Ice::ObjectProxySeq&, const AddProxyCookiePtr&); void addProxyException(const Ice::Exception&, const AddProxyCookiePtr&); - void addProxy(const Ice::ObjectPrx&); - bool addProxy(const Ice::ObjectPrx&, const AddProxyCallbackPtr&); + void addProxy(const Ice::ObjectPrxPtr&); + bool addProxy(const Ice::ObjectPrxPtr&, const AddProxyCallbackPtr&); void setAdapter(const Ice::ObjectAdapterPtr&); Ice::ObjectAdapterPtr getAdapter() const; @@ -129,13 +141,13 @@ public: // // The following methods need to be public for access by AMI callbacks. // - std::vector<EndpointIPtr> setClientEndpoints(const Ice::ObjectPrx&); - std::vector<EndpointIPtr> setServerEndpoints(const Ice::ObjectPrx&); - void addAndEvictProxies(const Ice::ObjectPrx&, const Ice::ObjectProxySeq&); + std::vector<EndpointIPtr> setClientEndpoints(const Ice::ObjectPrxPtr&); + std::vector<EndpointIPtr> setServerEndpoints(const Ice::ObjectPrxPtr&); + void addAndEvictProxies(const Ice::ObjectPrxPtr&, const Ice::ObjectProxySeq&); private: - const Ice::RouterPrx _router; + const Ice::RouterPrxPtr _router; std::vector<EndpointIPtr> _clientEndpoints; std::vector<EndpointIPtr> _serverEndpoints; Ice::ObjectAdapterPtr _adapter; |