summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/AdapterCache.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2006-03-28 16:33:39 +0000
committerBenoit Foucher <benoit@zeroc.com>2006-03-28 16:33:39 +0000
commit8893fc008abebf258d78b37914f3203d1e62a5ba (patch)
treed7a56d1c4850fabbf2fa0949e50e021a63343511 /cpp/src/IceGrid/AdapterCache.cpp
parentptr_fun doesn't work with GCC, added temporary #ifdef for Windows only (diff)
downloadice-8893fc008abebf258d78b37914f3203d1e62a5ba.tar.bz2
ice-8893fc008abebf258d78b37914f3203d1e62a5ba.tar.xz
ice-8893fc008abebf258d78b37914f3203d1e62a5ba.zip
Win32 fix for random_shuffle
Diffstat (limited to 'cpp/src/IceGrid/AdapterCache.cpp')
-rw-r--r--cpp/src/IceGrid/AdapterCache.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/cpp/src/IceGrid/AdapterCache.cpp b/cpp/src/IceGrid/AdapterCache.cpp
index b6bc81a2014..d7f263a349e 100644
--- a/cpp/src/IceGrid/AdapterCache.cpp
+++ b/cpp/src/IceGrid/AdapterCache.cpp
@@ -338,7 +338,11 @@ ReplicaGroupEntry::getProxies(bool allRegistered, int& nReplicas)
else// if(RandomLoadBalancingPolicyPtr::dynamicCast(_loadBalancing))
{
replicas = _replicas;
+#ifdef _MSC_VER
+ random_shuffle(replicas.begin(), replicas.end(), ptr_fun(IceUtil::random));
+#else
random_shuffle(replicas.begin(), replicas.end(), IceUtil::random);
+#endif
}
}
@@ -348,7 +352,11 @@ ReplicaGroupEntry::getProxies(bool allRegistered, int& nReplicas)
// This must be done outside the synchronization block since
// the sort() will call and lock each server entry.
//
+#ifdef _MSC_VER
+ random_shuffle(replicas.begin(), replicas.end(), ptr_fun(IceUtil::random));
+#else
random_shuffle(replicas.begin(), replicas.end(), IceUtil::random);
+#endif
sort(replicas.begin(), replicas.end(), ServerLoadCI(loadSample));
}
@@ -391,7 +399,11 @@ ReplicaGroupEntry::getLeastLoadedNodeLoad(LoadSample loadSample) const
// This must be done outside the synchronization block since
// min_element() will call and lock each server entry.
//
+#ifdef _MSC_VER
+ random_shuffle(replicas.begin(), replicas.end(), ptr_fun(IceUtil::random));
+#else
random_shuffle(replicas.begin(), replicas.end(), IceUtil::random);
+#endif
AdapterEntryPtr adpt = min_element(replicas.begin(), replicas.end(), ServerLoadCI(loadSample))->second;
return adpt->getLeastLoadedNodeLoad(loadSample);
}