diff options
author | Benoit Foucher <benoit@zeroc.com> | 2006-11-03 09:27:47 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2006-11-03 09:27:47 +0000 |
commit | e68a0e117ee67b3b0e3f64e14da73802e7877814 (patch) | |
tree | 62fc9806929cc447a694a1a5d094271766b998e4 /cpp/src/IceGrid/DescriptorBuilder.cpp | |
parent | Added some IceVb stuff (diff) | |
download | ice-e68a0e117ee67b3b0e3f64e14da73802e7877814.tar.bz2 ice-e68a0e117ee67b3b0e3f64e14da73802e7877814.tar.xz ice-e68a0e117ee67b3b0e3f64e14da73802e7877814.zip |
Added ordered load balancing
Diffstat (limited to 'cpp/src/IceGrid/DescriptorBuilder.cpp')
-rw-r--r-- | cpp/src/IceGrid/DescriptorBuilder.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/cpp/src/IceGrid/DescriptorBuilder.cpp b/cpp/src/IceGrid/DescriptorBuilder.cpp index c10abbe9acb..7071c4a359a 100644 --- a/cpp/src/IceGrid/DescriptorBuilder.cpp +++ b/cpp/src/IceGrid/DescriptorBuilder.cpp @@ -253,6 +253,16 @@ ApplicationDescriptorBuilder::addReplicaGroup(const XmlAttributesHelper& attrs) } void +ApplicationDescriptorBuilder::finishReplicaGroup() +{ + if(!_descriptor.replicaGroups.back().loadBalancing) + { + _descriptor.replicaGroups.back().loadBalancing = new RandomLoadBalancingPolicy(); + _descriptor.replicaGroups.back().loadBalancing->nReplicas = "0"; + } +} + +void ApplicationDescriptorBuilder::setLoadBalancing(const XmlAttributesHelper& attrs) { LoadBalancingPolicyPtr policy; @@ -261,6 +271,10 @@ ApplicationDescriptorBuilder::setLoadBalancing(const XmlAttributesHelper& attrs) { policy = new RandomLoadBalancingPolicy(); } + else if(type == "ordered") + { + policy = new OrderedLoadBalancingPolicy(); + } else if(type == "round-robin") { policy = new RoundRobinLoadBalancingPolicy(); @@ -275,7 +289,7 @@ ApplicationDescriptorBuilder::setLoadBalancing(const XmlAttributesHelper& attrs) { throw "invalid load balancing policy `" + type + "'"; } - policy->nReplicas = attrs("n-replicas", "0"); + policy->nReplicas = attrs("n-replicas", "1"); _descriptor.replicaGroups.back().loadBalancing = policy; } @@ -611,6 +625,7 @@ CommunicatorDescriptorBuilder::addAdapter(const XmlAttributesHelper& attrs) desc.id = fqn + "." + desc.name; } desc.replicaGroupId = attrs("replica-group", ""); + desc.priority = attrs("priority", ""); desc.registerProcess = attrs.asBool("register-process", false); if(desc.id == "") { @@ -817,7 +832,7 @@ IceBoxDescriptorBuilder::init(const IceBoxDescriptorPtr& desc, const XmlAttribut ServerDescriptorBuilder::init(desc, attrs); _descriptor = desc; - addProperty(_hiddenProperties, "IceBox.InstanceName", _descriptor->id); + addProperty(_hiddenProperties, "IceBox.InstanceName", "${server}"); addProperty(_hiddenProperties, "IceBox.ServiceManager.Endpoints", "tcp -h 127.0.0.1"); addProperty(_hiddenProperties, "IceBox.ServiceManager.RegisterProcess", "1"); } |