summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/IceGrid/Database.cpp8
-rw-r--r--cpp/src/IceGrid/Database.h5
-rw-r--r--cpp/src/IceGrid/ObserverSessionI.cpp14
-rw-r--r--cpp/src/IceGrid/ObserverSessionI.h2
-rw-r--r--cpp/src/IceGrid/RegistryI.cpp14
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;