diff options
author | Benoit Foucher <benoit@zeroc.com> | 2005-10-21 08:30:38 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2005-10-21 08:30:38 +0000 |
commit | 9f02417852686f6c9b9ad237ea1708e8eedf07fd (patch) | |
tree | da0a73d22f7c05242c36b6f26a7325d7f996f028 /cpp/src | |
parent | If GetSockOpt fails then throw ConnectionFailedException. (diff) | |
download | ice-9f02417852686f6c9b9ad237ea1708e8eedf07fd.tar.bz2 ice-9f02417852686f6c9b9ad237ea1708e8eedf07fd.tar.xz ice-9f02417852686f6c9b9ad237ea1708e8eedf07fd.zip |
Added getQuery and getAdmin methods to the session interface.
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; |