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.h35
1 files changed, 31 insertions, 4 deletions
diff --git a/cpp/src/Ice/RouterInfo.h b/cpp/src/Ice/RouterInfo.h
index f7a6d9d773f..7a05dacddd2 100644
--- a/cpp/src/Ice/RouterInfo.h
+++ b/cpp/src/Ice/RouterInfo.h
@@ -16,6 +16,7 @@
#include <Ice/RouterF.h>
#include <Ice/ProxyF.h>
#include <Ice/EndpointIF.h>
+#include <Ice/BuiltinSequences.h>
#include <set>
@@ -47,6 +48,24 @@ class RouterInfo : public IceUtil::Shared, public IceUtil::Mutex
{
public:
+ class GetClientEndpointsCallback : virtual public IceUtil::Shared
+ {
+ public:
+
+ virtual void setEndpoints(const std::vector<EndpointIPtr>&) = 0;
+ virtual void setException(const Ice::LocalException&) = 0;
+ };
+ typedef IceUtil::Handle<GetClientEndpointsCallback> GetClientEndpointsCallbackPtr;
+
+ class AddProxyCallback : virtual public IceUtil::Shared
+ {
+ public:
+
+ virtual void addedProxy() = 0;
+ virtual void setException(const Ice::LocalException&) = 0;
+ };
+ typedef IceUtil::Handle<AddProxyCallback> AddProxyCallbackPtr;
+
RouterInfo(const Ice::RouterPrx&);
void destroy();
@@ -56,19 +75,27 @@ public:
bool operator<(const RouterInfo&) const;
Ice::RouterPrx getRouter() const;
- std::vector<IceInternal::EndpointIPtr> getClientEndpoints();
- std::vector<IceInternal::EndpointIPtr> getServerEndpoints();
+ std::vector<EndpointIPtr> getClientEndpoints();
+ void getClientEndpoints(const GetClientEndpointsCallbackPtr&);
+ std::vector<EndpointIPtr> getServerEndpoints();
void addProxy(const Ice::ObjectPrx&);
+ bool addProxy(const Ice::ObjectPrx&, const AddProxyCallbackPtr&);
+
void setAdapter(const Ice::ObjectAdapterPtr&);
Ice::ObjectAdapterPtr getAdapter() const;
private:
+ std::vector<EndpointIPtr> setClientEndpoints(const Ice::ObjectPrx&);
+ std::vector<EndpointIPtr> setServerEndpoints(const Ice::ObjectPrx&);
+ void addAndEvictProxies(const Ice::ObjectPrx&, const Ice::ObjectProxySeq&);
+
const Ice::RouterPrx _router;
- std::vector<IceInternal::EndpointIPtr> _clientEndpoints;
- std::vector<IceInternal::EndpointIPtr> _serverEndpoints;
+ std::vector<EndpointIPtr> _clientEndpoints;
+ std::vector<EndpointIPtr> _serverEndpoints;
Ice::ObjectAdapterPtr _adapter;
std::set<Ice::Identity> _identities;
+ std::multiset<Ice::Identity> _evictedIdentities;
};
}