summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/DescriptorBuilder.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2006-11-03 09:27:47 +0000
committerBenoit Foucher <benoit@zeroc.com>2006-11-03 09:27:47 +0000
commite68a0e117ee67b3b0e3f64e14da73802e7877814 (patch)
tree62fc9806929cc447a694a1a5d094271766b998e4 /cpp/src/IceGrid/DescriptorBuilder.cpp
parentAdded some IceVb stuff (diff)
downloadice-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.cpp19
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");
}