diff options
author | Benoit Foucher <benoit@zeroc.com> | 2003-11-26 03:40:29 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2003-11-26 03:40:29 +0000 |
commit | d6750a9adeafc45063afcf8b487ee727b1e78c56 (patch) | |
tree | 72b6a6c1ba364e69fb1a82142c27997f3ee31c5b /cpp | |
parent | Fixed merge mistake (diff) | |
download | ice-d6750a9adeafc45063afcf8b487ee727b1e78c56.tar.bz2 ice-d6750a9adeafc45063afcf8b487ee727b1e78c56.tar.xz ice-d6750a9adeafc45063afcf8b487ee727b1e78c56.zip |
Added dbproperty element
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/config/IcePackAdmin.py | 5 | ||||
-rw-r--r-- | cpp/src/IcePack/ComponentBuilder.cpp | 27 | ||||
-rw-r--r-- | cpp/src/IcePack/ComponentBuilder.h | 2 | ||||
-rw-r--r-- | cpp/src/IcePack/NodeRegistryI.cpp | 3 | ||||
-rw-r--r-- | cpp/src/IcePack/ServiceBuilder.cpp | 22 | ||||
-rw-r--r-- | cpp/src/IcePack/ServiceBuilder.h | 2 | ||||
-rw-r--r-- | cpp/test/IcePack/deployer/freezeservice.xml | 4 |
7 files changed, 57 insertions, 8 deletions
diff --git a/cpp/config/IcePackAdmin.py b/cpp/config/IcePackAdmin.py index 551bfdbe598..6904f34403c 100644 --- a/cpp/config/IcePackAdmin.py +++ b/cpp/config/IcePackAdmin.py @@ -80,11 +80,14 @@ def startIcePackNode(testdir): r' --Ice.ProgramName=icepacknode' + \ r' --IcePack.Node.Trace.Activator=0' + \ r' --IcePack.Node.Trace.Adapter=0' + \ - r' --IcePack.Node.Trace.Server=0' + r' --IcePack.Node.Trace.Server=0' + \ + r' --IcePack.Node.PrintServersReady=node' icePackPipe = os.popen(command) TestUtil.getServerPid(icePackPipe) TestUtil.getAdapterReady(icePackPipe) + TestUtil.waitServiceReady(icePackPipe, 'node') + print "ok" return icePackPipe diff --git a/cpp/src/IcePack/ComponentBuilder.cpp b/cpp/src/IcePack/ComponentBuilder.cpp index 3973fdd20eb..6d5aacf1f90 100644 --- a/cpp/src/IcePack/ComponentBuilder.cpp +++ b/cpp/src/IcePack/ComponentBuilder.cpp @@ -178,17 +178,28 @@ class GenerateConfiguration : public Task class WriteConfigProperty : public unary_function<Ice::PropertyDict::value_type, string> { public: + + WriteConfigProperty(const string& sep) : + _sep(sep) + { + } + string operator()(const Ice::PropertyDict::value_type& p) const { - return p.first + "=" + p.second; + return p.first + _sep + p.second; } + + private: + + const string _sep; }; public: - GenerateConfiguration(const string& file, const Ice::PropertiesPtr& properties) : + GenerateConfiguration(const string& sep, const string& file, const Ice::PropertiesPtr& properties) : + _sep(sep), _file(file), _properties(properties) { @@ -207,7 +218,7 @@ public: } Ice::PropertyDict props = _properties->getPropertiesForPrefix(""); - transform(props.begin(), props.end(), ostream_iterator<string>(configfile,"\n"), WriteConfigProperty()); + transform(props.begin(), props.end(), ostream_iterator<string>(configfile,"\n"), WriteConfigProperty(_sep)); configfile.close(); } @@ -224,7 +235,8 @@ public: private: - string _file; + const string _sep; + const string _file; Ice::PropertiesPtr _properties; }; @@ -606,7 +618,7 @@ IcePack::ComponentBuilder::createConfigFile(const string& name) { assert(!name.empty()); _configFile = getVariable("datadir") + (name[0] == '/' ? name : "/" + name); - _tasks.push_back(new GenerateConfiguration(_configFile, _properties)); + _tasks.push_back(new GenerateConfiguration("=", _configFile, _properties)); } void @@ -810,3 +822,8 @@ IcePack::ComponentBuilder::undoFrom(vector<TaskPtr>::iterator p) } } +void +IcePack::ComponentBuilder::generateConfigFile(const string& sep, const string& path, const Ice::PropertiesPtr& props) +{ + _tasks.push_back(new GenerateConfiguration(sep, path, props)); +} diff --git a/cpp/src/IcePack/ComponentBuilder.h b/cpp/src/IcePack/ComponentBuilder.h index 9e9bf442a80..31abf783323 100644 --- a/cpp/src/IcePack/ComponentBuilder.h +++ b/cpp/src/IcePack/ComponentBuilder.h @@ -117,6 +117,8 @@ public: void undoFrom(std::vector<TaskPtr>::iterator); protected: + + void generateConfigFile(const std::string&, const std::string&, const Ice::PropertiesPtr&); Ice::CommunicatorPtr _communicator; ObjectRegistryPrx _objectRegistry; diff --git a/cpp/src/IcePack/NodeRegistryI.cpp b/cpp/src/IcePack/NodeRegistryI.cpp index d25ab265bd6..20e6278f478 100644 --- a/cpp/src/IcePack/NodeRegistryI.cpp +++ b/cpp/src/IcePack/NodeRegistryI.cpp @@ -65,7 +65,9 @@ IcePack::NodeRegistryI::add(const string& name, const NodePrx& node, const Ice:: { try { + sync.release(); p->second->ice_ping(); + sync.acquire(); throw NodeActiveException(); } catch(const Ice::LocalException&) @@ -73,6 +75,7 @@ IcePack::NodeRegistryI::add(const string& name, const NodePrx& node, const Ice:: // // Node not active. // + sync.acquire(); } p.set(node); diff --git a/cpp/src/IcePack/ServiceBuilder.cpp b/cpp/src/IcePack/ServiceBuilder.cpp index 5617c02ccf6..683dcc83049 100644 --- a/cpp/src/IcePack/ServiceBuilder.cpp +++ b/cpp/src/IcePack/ServiceBuilder.cpp @@ -82,6 +82,15 @@ IcePack::ServiceHandler::startElement(const string& name, const IceXML::Attribut _builder.getServerBuilder().registerAdapter(adapterName, getAttributeValue(attrs, "endpoints"), _currentAdapterId); } + else if(name == "dbproperty") + { + string value = getAttributeValueWithDefault(attrs, "value", ""); + if(value.empty()) + { + value = _builder.toLocation(getAttributeValueWithDefault(attrs, "location", "")); + } + _builder.addDatabaseProperty(getAttributeValue(attrs, "name"), value); + } } IcePack::ServiceBuilder::ServiceBuilder(const NodeInfoPtr& nodeInfo, @@ -90,7 +99,8 @@ IcePack::ServiceBuilder::ServiceBuilder(const NodeInfoPtr& nodeInfo, const vector<string>& targets) : ComponentBuilder(nodeInfo->getCommunicator(), variables, targets), _nodeInfo(nodeInfo), - _serverBuilder(serverBuilder) + _serverBuilder(serverBuilder), + _dbProperties(Ice::createProperties()) { assert(_variables.back().find("parent") != _variables.back().end()); assert(_variables.back().find("name") != _variables.back().end()); @@ -158,7 +168,15 @@ IcePack::ServiceBuilder::setDBEnv(const string& dir) } _serverBuilder.addProperty("IceBox.DBEnvName." + getVariable("name"), getVariable("name")); addProperty("Freeze.DbEnv." + getVariable("name") + ".DbHome", path); - + + string dbConfigFile = path + "/DB_CONFIG"; + generateConfigFile(" ", dbConfigFile, _dbProperties); +} + +void +IcePack::ServiceBuilder::addDatabaseProperty(const string& name, const string& value) +{ + _dbProperties->setProperty(name, value); } // diff --git a/cpp/src/IcePack/ServiceBuilder.h b/cpp/src/IcePack/ServiceBuilder.h index 922586adc6b..e753993152b 100644 --- a/cpp/src/IcePack/ServiceBuilder.h +++ b/cpp/src/IcePack/ServiceBuilder.h @@ -46,6 +46,7 @@ public: void setKind(ServiceKind); void setEntryPoint(const std::string&); void setDBEnv(const std::string&); + void addDatabaseProperty(const std::string&, const std::string&); virtual std::string getDefaultAdapterId(const std::string&); @@ -56,6 +57,7 @@ private: ServerBuilder& _serverBuilder; ServiceKind _kind; + Ice::PropertiesPtr _dbProperties; }; } diff --git a/cpp/test/IcePack/deployer/freezeservice.xml b/cpp/test/IcePack/deployer/freezeservice.xml index dbc6182de12..fe5660ec7cb 100644 --- a/cpp/test/IcePack/deployer/freezeservice.xml +++ b/cpp/test/IcePack/deployer/freezeservice.xml @@ -10,8 +10,12 @@ <property name="${name}.Identity" value="${parent}-${name}"/> <property name="${name}.Type" value="freeze"/> <property name="${name}.ServiceName" value="${name}"/> + + <dbproperty name="set_cachesize" value="0 52428800 1"/> </properties> + + <target name="manual"> <property name="Mode" value="manual"/> </target> |