summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/NodeI.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceGrid/NodeI.h')
-rw-r--r--cpp/src/IceGrid/NodeI.h22
1 files changed, 12 insertions, 10 deletions
diff --git a/cpp/src/IceGrid/NodeI.h b/cpp/src/IceGrid/NodeI.h
index 86114cff85a..d72887d2aa2 100644
--- a/cpp/src/IceGrid/NodeI.h
+++ b/cpp/src/IceGrid/NodeI.h
@@ -29,12 +29,14 @@ typedef IceUtil::Handle<Activator> ActivatorPtr;
class ServerI;
typedef IceUtil::Handle<ServerI> ServerIPtr;
+class NodeSessionManager;
+
class NodeI : public Node, public IceUtil::Monitor<IceUtil::Mutex>
{
public:
- NodeI(const Ice::ObjectAdapterPtr&, const ActivatorPtr&, const WaitQueuePtr&, const TraceLevelsPtr&,
- const NodePrx&, const std::string&, const UserAccountMapperPrx&);
+ NodeI(const Ice::ObjectAdapterPtr&, NodeSessionManager&, const ActivatorPtr&, const WaitQueuePtr&,
+ const TraceLevelsPtr&, const NodePrx&, const std::string&, const UserAccountMapperPrx&);
virtual ~NodeI();
virtual void loadServer_async(const AMD_Node_loadServerPtr&, const std::string&, const ServerDescriptorPtr&,
@@ -43,6 +45,9 @@ public:
virtual void patch(const std::string&, const std::string&, const DistributionDescriptor&, bool,
const Ice::Current&);
+ virtual void replicaAdded(const InternalRegistryPrx&, const Ice::Current&);
+ virtual void replicaRemoved(const InternalRegistryPrx&, const Ice::Current&);
+
virtual std::string getName(const Ice::Current& = Ice::Current()) const;
virtual std::string getHostname(const Ice::Current& = Ice::Current()) const;
virtual LoadInfo getLoad(const Ice::Current& = Ice::Current()) const;
@@ -55,16 +60,13 @@ public:
TraceLevelsPtr getTraceLevels() const;
NodeObserverPrx getObserver() const;
UserAccountMapperPrx getUserAccountMapper() const;
+ PlatformInfo& getPlatformInfo() const { return _platform; }
- NodeSessionPrx getSession() const;
- void setSession(const NodeSessionPrx&, const NodeObserverPrx&);
- int keepAlive();
- void waitForSession();
- void stop();
+ NodeSessionPrx registerWithRegistry(const InternalRegistryPrx&);
private:
- void checkConsistency();
+ void checkConsistency(const NodeSessionPrx&);
void checkConsistencyNoSync(const Ice::StringSeq&);
bool canRemoveServerDirectory(const std::string&);
void initObserver(const Ice::StringSeq&);
@@ -76,6 +78,7 @@ private:
Ice::Identity createServerIdentity(const std::string&);
const Ice::ObjectAdapterPtr _adapter;
+ NodeSessionManager& _sessions;
const ActivatorPtr _activator;
const WaitQueuePtr _waitQueue;
const TraceLevelsPtr _traceLevels;
@@ -88,9 +91,8 @@ private:
std::string _serversDir;
std::string _tmpDir;
unsigned long _serial;
+ IceUtil::Mutex _observerMutex;
NodeObserverPrx _observer;
- IceUtil::Monitor<IceUtil::Mutex> _sessionMonitor;
- NodeSessionPrx _session;
mutable PlatformInfo _platform;
std::map<std::string, std::set<ServerIPtr> > _serversByApplication;
std::set<std::string> _patchInProgress;