From bd015e11daef44fa761dbcda317735e692ec2c29 Mon Sep 17 00:00:00 2001 From: Benoit Foucher Date: Wed, 19 Apr 2006 16:18:44 +0000 Subject: Fixed bug with parsing node descriptors --- cpp/src/IceGrid/DescriptorBuilder.cpp | 31 +++++++------------------------ 1 file changed, 7 insertions(+), 24 deletions(-) (limited to 'cpp/src/IceGrid/DescriptorBuilder.cpp') 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 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", ""); -- cgit v1.2.3