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