diff options
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/IceGrid/Database.cpp | 8 | ||||
-rw-r--r-- | cpp/src/IceGrid/Database.h | 5 | ||||
-rw-r--r-- | cpp/src/IceGrid/ObserverSessionI.cpp | 14 | ||||
-rw-r--r-- | cpp/src/IceGrid/ObserverSessionI.h | 2 | ||||
-rw-r--r-- | cpp/src/IceGrid/RegistryI.cpp | 14 |
5 files changed, 35 insertions, 8 deletions
diff --git a/cpp/src/IceGrid/Database.cpp b/cpp/src/IceGrid/Database.cpp index 1d696680561..6af3f3dc253 100644 --- a/cpp/src/IceGrid/Database.cpp +++ b/cpp/src/IceGrid/Database.cpp @@ -115,11 +115,13 @@ struct ObjectLoadCI : binary_function<pair<Ice::ObjectPrx, float>&, pair<Ice::Ob Database::Database(const Ice::ObjectAdapterPtr& adapter, const string& envName, + const string& instanceName, int nodeSessionTimeout, const TraceLevelsPtr& traceLevels) : _communicator(adapter->getCommunicator()), _internalAdapter(adapter), _envName(envName), + _instanceName(instanceName), _traceLevels(traceLevels), _nodeCache(nodeSessionTimeout), _objectCache(_communicator), @@ -164,6 +166,12 @@ Database::~Database() { } +std::string +Database::getInstanceName() const +{ + return _instanceName; +} + void Database::setObservers(const RegistryObserverPrx& registryObserver, const NodeObserverPrx& nodeObserver) { diff --git a/cpp/src/IceGrid/Database.h b/cpp/src/IceGrid/Database.h index cc9e8cd0ae2..e5c74fffed0 100644 --- a/cpp/src/IceGrid/Database.h +++ b/cpp/src/IceGrid/Database.h @@ -45,9 +45,11 @@ class Database : public IceUtil::Shared, public IceUtil::Mutex { public: - Database(const Ice::ObjectAdapterPtr&, const std::string&, int, const TraceLevelsPtr&); + Database(const Ice::ObjectAdapterPtr&, const std::string&, const std::string&, int, const TraceLevelsPtr&); virtual ~Database(); + std::string getInstanceName() const; + void setObservers(const RegistryObserverPrx&, const NodeObserverPrx&); int lock(ObserverSessionI*, const std::string&); @@ -118,6 +120,7 @@ private: const Ice::CommunicatorPtr _communicator; const Ice::ObjectAdapterPtr _internalAdapter; const std::string _envName; + const std::string _instanceName; const TraceLevelsPtr _traceLevels; NodeCache _nodeCache; diff --git a/cpp/src/IceGrid/ObserverSessionI.cpp b/cpp/src/IceGrid/ObserverSessionI.cpp index 14594c85206..c265fd1d6d1 100644 --- a/cpp/src/IceGrid/ObserverSessionI.cpp +++ b/cpp/src/IceGrid/ObserverSessionI.cpp @@ -45,6 +45,20 @@ ObserverSessionI::getTimeout(const Ice::Current&) const return _timeout; } +QueryPrx +ObserverSessionI::getQuery(const Ice::Current& current) const +{ + return QueryPrx::uncheckedCast( + current.adapter->getCommunicator()->stringToProxy(_database->getInstanceName() + "/Query")); +} + +AdminPrx +ObserverSessionI::getAdmin(const Ice::Current& current) const +{ + return AdminPrx::uncheckedCast( + current.adapter->getCommunicator()->stringToProxy(_database->getInstanceName() + "/Admin")); +} + void ObserverSessionI::setObservers(const RegistryObserverPrx& registryObserver, const NodeObserverPrx& nodeObserver, diff --git a/cpp/src/IceGrid/ObserverSessionI.h b/cpp/src/IceGrid/ObserverSessionI.h index 3feacbb9864..d40811ac9e2 100644 --- a/cpp/src/IceGrid/ObserverSessionI.h +++ b/cpp/src/IceGrid/ObserverSessionI.h @@ -33,6 +33,8 @@ public: virtual ~ObserverSessionI(); virtual int getTimeout(const Ice::Current&) const; + virtual QueryPrx getQuery(const Ice::Current&) const; + virtual AdminPrx getAdmin(const Ice::Current&) const; virtual void setObservers(const RegistryObserverPrx&, const NodeObserverPrx&, const Ice::Current&); virtual void setObserversByIdentity(const Ice::Identity&, const Ice::Identity&, const Ice::Current&); diff --git a/cpp/src/IceGrid/RegistryI.cpp b/cpp/src/IceGrid/RegistryI.cpp index d37efab7549..637bc619ca9 100644 --- a/cpp/src/IceGrid/RegistryI.cpp +++ b/cpp/src/IceGrid/RegistryI.cpp @@ -242,19 +242,19 @@ RegistryI::start(bool nowarn) } // - // Create the internal registries (node, server, adapter, object). - // - const string envName = "Registry"; - properties->setProperty("Freeze.DbEnv.Registry.DbHome", dbPath); - _database = new Database(registryAdapter, envName, _nodeSessionTimeout, traceLevels); - - // // Get the instance name // const string instanceNameProperty = "IceGrid.InstanceName"; string instanceName = properties->getPropertyWithDefault(instanceNameProperty, "IceGrid"); // + // Create the internal registries (node, server, adapter, object). + // + const string envName = "Registry"; + properties->setProperty("Freeze.DbEnv.Registry.DbHome", dbPath); + _database = new Database(registryAdapter, envName, instanceName, _nodeSessionTimeout, traceLevels); + + // // Create the locator registry and locator interfaces. // bool dynamicReg = properties->getPropertyAsInt("IceGrid.Registry.DynamicRegistration") > 0; |