summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2003-11-26 03:40:29 +0000
committerBenoit Foucher <benoit@zeroc.com>2003-11-26 03:40:29 +0000
commitd6750a9adeafc45063afcf8b487ee727b1e78c56 (patch)
tree72b6a6c1ba364e69fb1a82142c27997f3ee31c5b /cpp
parentFixed merge mistake (diff)
downloadice-d6750a9adeafc45063afcf8b487ee727b1e78c56.tar.bz2
ice-d6750a9adeafc45063afcf8b487ee727b1e78c56.tar.xz
ice-d6750a9adeafc45063afcf8b487ee727b1e78c56.zip
Added dbproperty element
Diffstat (limited to 'cpp')
-rw-r--r--cpp/config/IcePackAdmin.py5
-rw-r--r--cpp/src/IcePack/ComponentBuilder.cpp27
-rw-r--r--cpp/src/IcePack/ComponentBuilder.h2
-rw-r--r--cpp/src/IcePack/NodeRegistryI.cpp3
-rw-r--r--cpp/src/IcePack/ServiceBuilder.cpp22
-rw-r--r--cpp/src/IcePack/ServiceBuilder.h2
-rw-r--r--cpp/test/IcePack/deployer/freezeservice.xml4
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>