summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2006-04-19 16:18:44 +0000
committerBenoit Foucher <benoit@zeroc.com>2006-04-19 16:18:44 +0000
commitbd015e11daef44fa761dbcda317735e692ec2c29 (patch)
treedcee75f09615539ae170a92ac7cecffdbc078a92 /cpp
parentseparating client/server configuration; removing client/server properties (diff)
downloadice-bd015e11daef44fa761dbcda317735e692ec2c29.tar.bz2
ice-bd015e11daef44fa761dbcda317735e692ec2c29.tar.xz
ice-bd015e11daef44fa761dbcda317735e692ec2c29.zip
Fixed bug with parsing node descriptors
Diffstat (limited to 'cpp')
-rw-r--r--cpp/demo/IceGrid/simple/application_with_replication.xml4
-rw-r--r--cpp/src/IceGrid/DescriptorBuilder.cpp31
-rw-r--r--cpp/src/IceGrid/DescriptorBuilder.h1
3 files changed, 8 insertions, 28 deletions
diff --git a/cpp/demo/IceGrid/simple/application_with_replication.xml b/cpp/demo/IceGrid/simple/application_with_replication.xml
index 010a9ca788e..e899d924e98 100644
--- a/cpp/demo/IceGrid/simple/application_with_replication.xml
+++ b/cpp/demo/IceGrid/simple/application_with_replication.xml
@@ -11,16 +11,12 @@
<icegrid>
<application name="Simple">
- <properties id="test"/>
<server-template id="SimpleServer">
<parameter name="index"/>
<server id="SimpleServer-${index}" exe="./server" activation="on-demand">
<adapter name="Hello" endpoints="tcp" register-process="true" replica-group="ReplicatedHelloAdapter"/>
<property name="Identity" value="hello"/>
- <properties>
- <properties refid="test"/>
- </properties>
</server>
</server-template>
diff --git a/cpp/src/IceGrid/DescriptorBuilder.cpp b/cpp/src/IceGrid/DescriptorBuilder.cpp
index ec9253fba5e..87482df7a8c 100644
--- a/cpp/src/IceGrid/DescriptorBuilder.cpp
+++ b/cpp/src/IceGrid/DescriptorBuilder.cpp
@@ -312,7 +312,7 @@ ApplicationDescriptorBuilder::addVariable(const XmlAttributesHelper& attrs)
NodeDescriptorBuilder*
ApplicationDescriptorBuilder::createNode(const XmlAttributesHelper& attrs)
{
- return new NodeDescriptorBuilder(*this, attrs);
+ return new NodeDescriptorBuilder(*this, _descriptor.nodes[attrs("name")], attrs);
}
TemplateDescriptorBuilder*
@@ -330,27 +330,7 @@ ApplicationDescriptorBuilder::createServiceTemplate(const XmlAttributesHelper& a
void
ApplicationDescriptorBuilder::addNode(const string& name, const NodeDescriptor& desc)
{
- NodeDescriptorDict::iterator p = _descriptor.nodes.find(name);
- if(p != _descriptor.nodes.end())
- {
- NodeDescriptor& n = p->second;
-
- if(!desc.loadFactor.empty())
- {
- n.loadFactor = desc.loadFactor;
- }
-
- map<string, string> variables(desc.variables.begin(), desc.variables.end());
- n.variables.swap(variables);
- n.variables.insert(variables.begin(), variables.end());
-
- n.serverInstances.insert(n.serverInstances.end(), desc.serverInstances.begin(), desc.serverInstances.end());
- n.servers.insert(n.servers.end(), desc.servers.begin(), desc.servers.end());
- }
- else
- {
- _descriptor.nodes.insert(make_pair(name, desc));
- }
+ _descriptor.nodes[name] = desc;
}
void
@@ -417,8 +397,11 @@ ServerInstanceDescriptorBuilder::addPropertySet(const PropertySetDescriptor& des
_descriptor.propertySet = desc;
}
-NodeDescriptorBuilder::NodeDescriptorBuilder(ApplicationDescriptorBuilder& app, const XmlAttributesHelper& attrs) :
- _application(app)
+NodeDescriptorBuilder::NodeDescriptorBuilder(ApplicationDescriptorBuilder& app,
+ const NodeDescriptor& desc,
+ const XmlAttributesHelper& attrs) :
+ _application(app),
+ _descriptor(desc)
{
_name = attrs("name");
_descriptor.loadFactor = attrs("load-factor", "");
diff --git a/cpp/src/IceGrid/DescriptorBuilder.h b/cpp/src/IceGrid/DescriptorBuilder.h
index 093aa32c617..d3c05f347df 100644
--- a/cpp/src/IceGrid/DescriptorBuilder.h
+++ b/cpp/src/IceGrid/DescriptorBuilder.h
@@ -141,6 +141,7 @@ class NodeDescriptorBuilder : public DescriptorBuilder
public:
NodeDescriptorBuilder(ApplicationDescriptorBuilder&, const XmlAttributesHelper&);
+ NodeDescriptorBuilder(ApplicationDescriptorBuilder&, const NodeDescriptor&, const XmlAttributesHelper&);
virtual ServerDescriptorBuilder* createServer(const XmlAttributesHelper&);
virtual ServerDescriptorBuilder* createIceBox(const XmlAttributesHelper&);