summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/NodeCache.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceGrid/NodeCache.h')
-rw-r--r--cpp/src/IceGrid/NodeCache.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/cpp/src/IceGrid/NodeCache.h b/cpp/src/IceGrid/NodeCache.h
index 6060ec912c5..e2228f275f2 100644
--- a/cpp/src/IceGrid/NodeCache.h
+++ b/cpp/src/IceGrid/NodeCache.h
@@ -31,7 +31,7 @@ typedef IceUtil::Handle<ServerEntry> ServerEntryPtr;
class ReplicaCache;
-class NodeEntry : public IceUtil::Monitor<IceUtil::Mutex>
+class NodeEntry : public IceUtil::Monitor<IceUtil::RecMutex>
{
public:
@@ -44,6 +44,7 @@ public:
void addServer(const ServerEntryPtr&);
void removeServer(const ServerEntryPtr&);
void setSession(const NodeSessionIPtr&);
+ void setSavedProxy(const NodePrx&);
NodePrx getProxy() const;
NodeInfo getInfo() const;
@@ -59,6 +60,11 @@ public:
void __incRef();
void __decRef();
+ void checkSession() const;
+ void setProxy(const NodePrx&);
+ void finishedRegistration();
+ void finishedRegistration(const Ice::Exception&);
+
private:
ServerDescriptorPtr getServerDescriptor(const ServerInfo&, const SessionIPtr&);
@@ -70,6 +76,9 @@ private:
NodeSessionIPtr _session;
std::map<std::string, ServerEntryPtr> _servers;
std::map<std::string, NodeDescriptor> _descriptors;
+
+ mutable bool _registering;
+ mutable NodePrx _proxy;
};
typedef IceUtil::Handle<NodeEntry> NodeEntryPtr;