summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/AdapterCache.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2005-08-17 08:40:58 +0000
committerBenoit Foucher <benoit@zeroc.com>2005-08-17 08:40:58 +0000
commit4a2274d7af953f5f9c77f4c17cd78239c7799cb6 (patch)
tree84b1ebfcdd35708d6c3880c3b6893523dd9fb630 /cpp/src/IceGrid/AdapterCache.cpp
parentbuild with optimization (diff)
downloadice-4a2274d7af953f5f9c77f4c17cd78239c7799cb6.tar.bz2
ice-4a2274d7af953f5f9c77f4c17cd78239c7799cb6.tar.xz
ice-4a2274d7af953f5f9c77f4c17cd78239c7799cb6.zip
Changed load balancing policy from an enum to a class type, minor cleanup.
Diffstat (limited to 'cpp/src/IceGrid/AdapterCache.cpp')
-rw-r--r--cpp/src/IceGrid/AdapterCache.cpp24
1 files changed, 12 insertions, 12 deletions
diff --git a/cpp/src/IceGrid/AdapterCache.cpp b/cpp/src/IceGrid/AdapterCache.cpp
index 26c8fb67973..b76facf52da 100644
--- a/cpp/src/IceGrid/AdapterCache.cpp
+++ b/cpp/src/IceGrid/AdapterCache.cpp
@@ -38,7 +38,7 @@ AdapterEntry::AdapterEntry(Cache<string, AdapterEntry>& cache, const std::string
}
void
-AdapterEntry::enableReplication(LoadBalancingPolicy policy)
+AdapterEntry::enableReplication(const LoadBalancingPolicyPtr& policy)
{
{
Lock sync(*this);
@@ -112,22 +112,18 @@ AdapterEntry::getProxies(int& endpointCount)
else
{
servers.reserve(_servers.size());
- switch(_loadBalancing)
+ if(RoundRobinLoadBalancingPolicyPtr::dynamicCast(_loadBalancing))
{
- case Random:
- servers = _servers;
- random_shuffle(servers.begin(), servers.end());
- break;
- case RoundRobin:
for(unsigned int i = 0; i < _servers.size(); ++i)
{
servers.push_back(_servers[(_lastServer + i) % _servers.size()]);
}
_lastServer = (_lastServer + 1) % _servers.size();
- break;
- case Adaptive:
- servers = _servers; // TODO
- break;
+ }
+ else // if(RandomLoadBalancingPolicyPtr::dynamicCast(_loadBalancing))
+ {
+ servers = _servers;
+ random_shuffle(servers.begin(), servers.end());
}
}
}
@@ -147,7 +143,11 @@ AdapterEntry::getProxies(int& endpointCount)
{
throw NodeUnreachableException();
}
- endpointCount = 1;
+
+ //
+ // TODO: Set to a configurable number of replicas.
+ //
+ endpointCount = 1; //servers.size();
return adapters;
}