diff options
Diffstat (limited to 'cpp/src/IceGrid/DescriptorBuilder.cpp')
-rw-r--r-- | cpp/src/IceGrid/DescriptorBuilder.cpp | 116 |
1 files changed, 26 insertions, 90 deletions
diff --git a/cpp/src/IceGrid/DescriptorBuilder.cpp b/cpp/src/IceGrid/DescriptorBuilder.cpp index 472af859692..f96619368c0 100644 --- a/cpp/src/IceGrid/DescriptorBuilder.cpp +++ b/cpp/src/IceGrid/DescriptorBuilder.cpp @@ -13,7 +13,7 @@ using namespace std; using namespace IceGrid; XmlAttributesHelper::XmlAttributesHelper(const IceXML::Attributes& attrs, - const Ice::LoggerPtr& logger, + const shared_ptr<Ice::Logger>& logger, const string& filename, int line) : _attributes(attrs), @@ -215,7 +215,7 @@ PropertySetDescriptorBuilder::finish() return true; } -ApplicationDescriptorBuilder::ApplicationDescriptorBuilder(const Ice::CommunicatorPtr& communicator, +ApplicationDescriptorBuilder::ApplicationDescriptorBuilder(const shared_ptr<Ice::Communicator>& communicator, const XmlAttributesHelper& attrs, const map<string, string>& overrides) : _communicator(communicator), @@ -225,7 +225,7 @@ ApplicationDescriptorBuilder::ApplicationDescriptorBuilder(const Ice::Communicat _descriptor.variables = overrides; } -ApplicationDescriptorBuilder::ApplicationDescriptorBuilder(const Ice::CommunicatorPtr& communicator, +ApplicationDescriptorBuilder::ApplicationDescriptorBuilder(const shared_ptr<Ice::Communicator>& communicator, const ApplicationDescriptor& app, const XmlAttributesHelper& attrs, const map<string, string>& overrides) : @@ -264,7 +264,7 @@ ApplicationDescriptorBuilder::finishReplicaGroup() { if(!_descriptor.replicaGroups.back().loadBalancing) { - _descriptor.replicaGroups.back().loadBalancing = new RandomLoadBalancingPolicy(); + _descriptor.replicaGroups.back().loadBalancing = make_shared<RandomLoadBalancingPolicy>(); _descriptor.replicaGroups.back().loadBalancing->nReplicas = "0"; } } @@ -272,23 +272,23 @@ ApplicationDescriptorBuilder::finishReplicaGroup() void ApplicationDescriptorBuilder::setLoadBalancing(const XmlAttributesHelper& attrs) { - LoadBalancingPolicyPtr policy; + shared_ptr<LoadBalancingPolicy> policy; string type = attrs("type"); if(type == "random") { - policy = new RandomLoadBalancingPolicy(); + policy = make_shared<RandomLoadBalancingPolicy>(); } else if(type == "ordered") { - policy = new OrderedLoadBalancingPolicy(); + policy = make_shared<OrderedLoadBalancingPolicy>(); } else if(type == "round-robin") { - policy = new RoundRobinLoadBalancingPolicy(); + policy = make_shared<RoundRobinLoadBalancingPolicy>(); } else if(type == "adaptive") { - AdaptiveLoadBalancingPolicyPtr alb = new AdaptiveLoadBalancingPolicy(); + auto alb = make_shared<AdaptiveLoadBalancingPolicy>(); alb->loadSample = attrs("load-sample", "1"); policy = alb; } @@ -498,7 +498,7 @@ NodeDescriptorBuilder::addServerInstance(const ServerInstanceDescriptor& desc) } void -NodeDescriptorBuilder::addServer(const ServerDescriptorPtr& server) +NodeDescriptorBuilder::addServer(const shared_ptr<ServerDescriptor>& server) { _descriptor.servers.push_back(server); } @@ -544,7 +544,7 @@ TemplateDescriptorBuilder::addParameter(const XmlAttributesHelper& attrs) } void -TemplateDescriptorBuilder::setDescriptor(const CommunicatorDescriptorPtr& desc) +TemplateDescriptorBuilder::setDescriptor(const shared_ptr<CommunicatorDescriptor>& desc) { _descriptor.descriptor = desc; } @@ -579,13 +579,13 @@ TemplateDescriptorBuilder::createService(const XmlAttributesHelper& attrs) return new ServiceDescriptorBuilder(_application.getCommunicator(), attrs); } -CommunicatorDescriptorBuilder::CommunicatorDescriptorBuilder(const Ice::CommunicatorPtr& communicator) : +CommunicatorDescriptorBuilder::CommunicatorDescriptorBuilder(const shared_ptr<Ice::Communicator>& communicator) : _communicator(communicator) { } void -CommunicatorDescriptorBuilder::init(const CommunicatorDescriptorPtr& desc, const XmlAttributesHelper&) +CommunicatorDescriptorBuilder::init(const shared_ptr<CommunicatorDescriptor>& desc, const XmlAttributesHelper&) { _descriptor = desc; } @@ -644,7 +644,7 @@ CommunicatorDescriptorBuilder::addAdapter(const XmlAttributesHelper& attrs) else { string fqn = "${server}"; - if(ServiceDescriptorPtr::dynamicCast(_descriptor)) + if(dynamic_pointer_cast<ServiceDescriptor>(_descriptor)) { fqn += ".${service}"; } @@ -702,64 +702,6 @@ CommunicatorDescriptorBuilder::addAllocatable(const XmlAttributesHelper& attrs) } void -CommunicatorDescriptorBuilder::addDbEnv(const XmlAttributesHelper& attrs) -{ - DbEnvDescriptor desc; - desc.name = attrs("name"); - - DbEnvDescriptorSeq::iterator p; - for(p = _descriptor->dbEnvs.begin(); p != _descriptor->dbEnvs.end(); ++p) - { - // - // We are re-opening the dbenv element to define more properties. - // - if(p->name == desc.name) - { - break; - } - } - - if(p != _descriptor->dbEnvs.end()) - { - // - // Remove the previously defined dbenv, we'll add it back again when - // the dbenv element end tag is reached. - // - desc = *p; - _descriptor->dbEnvs.erase(p); - } - - if(desc.dbHome.empty()) - { - desc.dbHome = attrs("home", ""); - } - - _descriptor->dbEnvs.push_back(desc); -} - -void -CommunicatorDescriptorBuilder::addDbEnvProperty(const XmlAttributesHelper& attrs) -{ - if(!_descriptor->dbEnvs.back().dbHome.empty()) - { - throw invalid_argument("can't add property to the database environment:\n" - "properties are only allowed if the database\n" - "environment home directory is managed by the node"); - } - - PropertyDescriptor prop; - prop.name = attrs("name"); - prop.value = attrs("value", ""); - _descriptor->dbEnvs.back().properties.push_back(prop); -} - -void -CommunicatorDescriptorBuilder::setDbEnvDescription(const string& value) -{ - _descriptor->dbEnvs.back().description = value; -} - -void CommunicatorDescriptorBuilder::addLog(const XmlAttributesHelper& attrs) { if(attrs.contains("property")) @@ -802,20 +744,20 @@ ServiceInstanceDescriptorBuilder::addPropertySet(const PropertySetDescriptor& de p.properties.insert(p.properties.end(), desc.properties.begin(), desc.properties.end()); } -ServerDescriptorBuilder::ServerDescriptorBuilder(const Ice::CommunicatorPtr& communicator, +ServerDescriptorBuilder::ServerDescriptorBuilder(const shared_ptr<Ice::Communicator>& communicator, const XmlAttributesHelper& attrs) : CommunicatorDescriptorBuilder(communicator) { - init(new ServerDescriptor(), attrs); + init(make_shared<ServerDescriptor>(), attrs); } -ServerDescriptorBuilder::ServerDescriptorBuilder(const Ice::CommunicatorPtr& communicator) : +ServerDescriptorBuilder::ServerDescriptorBuilder(const shared_ptr<Ice::Communicator>& communicator) : CommunicatorDescriptorBuilder(communicator) { } void -ServerDescriptorBuilder::init(const ServerDescriptorPtr& desc, const XmlAttributesHelper& attrs) +ServerDescriptorBuilder::init(const shared_ptr<ServerDescriptor>& desc, const XmlAttributesHelper& attrs) { CommunicatorDescriptorBuilder::init(desc, attrs); _descriptor = desc; @@ -855,7 +797,7 @@ ServerDescriptorBuilder::addEnv(const string& v) } void -ServerDescriptorBuilder::addService(const ServiceDescriptorPtr& /*desc*/) +ServerDescriptorBuilder::addService(const shared_ptr<ServiceDescriptor>& /*desc*/) { assert(false); } @@ -866,15 +808,15 @@ ServerDescriptorBuilder::addServiceInstance(const ServiceInstanceDescriptor& /*d assert(false); } -IceBoxDescriptorBuilder::IceBoxDescriptorBuilder(const Ice::CommunicatorPtr& communicator, +IceBoxDescriptorBuilder::IceBoxDescriptorBuilder(const shared_ptr<Ice::Communicator>& communicator, const XmlAttributesHelper& attrs) : ServerDescriptorBuilder(communicator) { - init(new IceBoxDescriptor(), attrs); + init(make_shared<IceBoxDescriptor>(), attrs); } void -IceBoxDescriptorBuilder::init(const IceBoxDescriptorPtr& desc, const XmlAttributesHelper& attrs) +IceBoxDescriptorBuilder::init(const shared_ptr<IceBoxDescriptor>& desc, const XmlAttributesHelper& attrs) { ServerDescriptorBuilder::init(desc, attrs); _descriptor = desc; @@ -899,19 +841,13 @@ IceBoxDescriptorBuilder::addAdapter(const XmlAttributesHelper& /*attrs*/) } void -IceBoxDescriptorBuilder::addDbEnv(const XmlAttributesHelper& /*attrs*/) -{ - throw invalid_argument("<dbenv> element can't be a child of an <icebox> element"); -} - -void IceBoxDescriptorBuilder::addServiceInstance(const ServiceInstanceDescriptor& desc) { _descriptor->services.push_back(desc); } void -IceBoxDescriptorBuilder::addService(const ServiceDescriptorPtr& desc) +IceBoxDescriptorBuilder::addService(const shared_ptr<ServiceDescriptor>& desc) { ServiceInstanceDescriptor instance; assert(desc); @@ -919,15 +855,15 @@ IceBoxDescriptorBuilder::addService(const ServiceDescriptorPtr& desc) _descriptor->services.push_back(instance); } -ServiceDescriptorBuilder::ServiceDescriptorBuilder(const Ice::CommunicatorPtr& communicator, +ServiceDescriptorBuilder::ServiceDescriptorBuilder(const shared_ptr<Ice::Communicator>& communicator, const XmlAttributesHelper& attrs) : CommunicatorDescriptorBuilder(communicator) { - init(new ServiceDescriptor(), attrs); + init(make_shared<ServiceDescriptor>(), attrs); } void -ServiceDescriptorBuilder::init(const ServiceDescriptorPtr& desc, const XmlAttributesHelper& attrs) +ServiceDescriptorBuilder::init(const shared_ptr<ServiceDescriptor>& desc, const XmlAttributesHelper& attrs) { CommunicatorDescriptorBuilder::init(desc, attrs); _descriptor = desc; |