summaryrefslogtreecommitdiff
path: root/cpp/src/IcePack/Registry.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IcePack/Registry.cpp')
-rw-r--r--cpp/src/IcePack/Registry.cpp44
1 files changed, 10 insertions, 34 deletions
diff --git a/cpp/src/IcePack/Registry.cpp b/cpp/src/IcePack/Registry.cpp
index d15a909d8cd..5a029a59f6e 100644
--- a/cpp/src/IcePack/Registry.cpp
+++ b/cpp/src/IcePack/Registry.cpp
@@ -44,29 +44,6 @@ IcePack::Registry::Registry(const CommunicatorPtr& communicator) :
IcePack::Registry::~Registry()
{
- if(_dbEnv)
- {
- try
- {
- _dbEnv->close();
- }
- catch(const Freeze::DBException& ex)
- {
- Error out(_communicator->getLogger());
- out << ex << ": " << ex.message;
- }
- catch(const Exception& ex)
- {
- Error out(_communicator->getLogger());
- out << ex;
- }
- catch(...)
- {
- Error out(_communicator->getLogger());
- out << "unknown exception";
- }
- _dbEnv = 0;
- }
}
bool
@@ -78,8 +55,8 @@ IcePack::Registry::start(bool nowarn, bool requiresInternalEndpoints)
//
// Initialize the database environment.
//
- string dbPath = properties->getProperty("IcePack.Registry.Data");
- if(dbPath.empty())
+ _envName = properties->getProperty("IcePack.Registry.Data");
+ if(_envName.empty())
{
Error out(_communicator->getLogger());
out << "property `IcePack.Registry.Data' is not set";
@@ -88,14 +65,13 @@ IcePack::Registry::start(bool nowarn, bool requiresInternalEndpoints)
else
{
struct stat filestat;
- if(stat(dbPath.c_str(), &filestat) != 0 || !S_ISDIR(filestat.st_mode))
+ if(stat(_envName.c_str(), &filestat) != 0 || !S_ISDIR(filestat.st_mode))
{
Error out(_communicator->getLogger());
out << "property `IcePack.Registry.Data' is not set to a valid directory path";
return false;
}
}
- _dbEnv = Freeze::initialize(_communicator, dbPath);
//
// Check that required properties are set and valid.
@@ -154,18 +130,18 @@ IcePack::Registry::start(bool nowarn, bool requiresInternalEndpoints)
ObjectAdapterPtr registryAdapter = _communicator->createObjectAdapter("IcePack.Registry.Internal");
- AdapterFactoryPtr adapterFactory = new AdapterFactory(registryAdapter, traceLevels, _dbEnv);
+ AdapterFactoryPtr adapterFactory = new AdapterFactory(registryAdapter, traceLevels, _envName);
- ObjectRegistryPtr objectRegistry = new ObjectRegistryI(_dbEnv->openDB("objectregistry", true),
- _dbEnv->openDB("objectregistry-types", true),
+ ObjectRegistryPtr objectRegistry = new ObjectRegistryI(_communicator, _envName,
+ "objectregistry", "objectregistry-types",
traceLevels);
- AdapterRegistryPtr adapterRegistry = new AdapterRegistryI(_dbEnv->openDB("adapterregistry", true), traceLevels);
+ AdapterRegistryPtr adapterRegistry = new AdapterRegistryI(_communicator, _envName, "adapterregistry", traceLevels);
- ServerRegistryPtr serverRegistry = new ServerRegistryI(_dbEnv->openDB("serverregistry", true), traceLevels);
+ ServerRegistryPtr serverRegistry = new ServerRegistryI(_communicator, _envName, "serverregistry", traceLevels);
- NodeRegistryPtr nodeRegistry = new NodeRegistryI(_dbEnv->openDB("noderegistry", true), adapterRegistry,
- adapterFactory, traceLevels);
+ NodeRegistryPtr nodeRegistry = new NodeRegistryI(_communicator, _envName, "noderegistry",
+ adapterRegistry, adapterFactory, traceLevels);
registryAdapter->add(objectRegistry, stringToIdentity("IcePack/ObjectRegistry"));
registryAdapter->add(adapterRegistry, stringToIdentity("IcePack/AdapterRegistry"));