diff options
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/src/Ice/Reference.cpp | 7 | ||||
-rw-r--r-- | cpp/src/IceGrid/AdapterCache.cpp | 9 | ||||
-rw-r--r-- | cpp/src/IceGrid/AllocatableObjectCache.cpp | 3 | ||||
-rw-r--r-- | cpp/src/IceGrid/Database.cpp | 6 |
4 files changed, 17 insertions, 8 deletions
diff --git a/cpp/src/Ice/Reference.cpp b/cpp/src/Ice/Reference.cpp index 6ded5007926..fbb59273cd2 100644 --- a/cpp/src/Ice/Reference.cpp +++ b/cpp/src/Ice/Reference.cpp @@ -44,6 +44,7 @@ struct RandomNumberGenerator : public std::unary_function<ptrdiff_t, ptrdiff_t> return IceUtil::random(static_cast<int>(d)); } }; + } CommunicatorPtr @@ -663,7 +664,8 @@ IceInternal::FixedReference::filterConnections(const vector<ConnectionIPtr>& all // // Randomize the order of connections. // - random_shuffle(connections.begin(), connections.end(), RandomNumberGenerator()); + RandomNumberGenerator rng; + random_shuffle(connections.begin(), connections.end(), rng); // // If a secure connection is requested, remove all non-secure @@ -1065,7 +1067,8 @@ IceInternal::RoutableReference::createConnection(const vector<EndpointIPtr>& all { case Random: { - random_shuffle(endpoints.begin(), endpoints.end(), RandomNumberGenerator()); + RandomNumberGenerator rng; + random_shuffle(endpoints.begin(), endpoints.end(), rng); break; } case Ordered: diff --git a/cpp/src/IceGrid/AdapterCache.cpp b/cpp/src/IceGrid/AdapterCache.cpp index 7a43d8c7d54..04b763f3527 100644 --- a/cpp/src/IceGrid/AdapterCache.cpp +++ b/cpp/src/IceGrid/AdapterCache.cpp @@ -365,14 +365,16 @@ ReplicaGroupEntry::getProxies(int& nReplicas, bool& replicaGroup) else if(AdaptiveLoadBalancingPolicyPtr::dynamicCast(_loadBalancing)) { replicas = _replicas; - random_shuffle(replicas.begin(), replicas.end(), RandomNumberGenerator()); + RandomNumberGenerator rng; + random_shuffle(replicas.begin(), replicas.end(), rng); adaptive = true; loadSample = _loadSample; } else// if(RandomLoadBalancingPolicyPtr::dynamicCast(_loadBalancing)) { replicas = _replicas; - random_shuffle(replicas.begin(), replicas.end(), RandomNumberGenerator()); + RandomNumberGenerator rng; + random_shuffle(replicas.begin(), replicas.end(), rng); } } @@ -439,7 +441,8 @@ ReplicaGroupEntry::getLeastLoadedNodeLoad(LoadSample loadSample) const // This must be done outside the synchronization block since // min_element() will call and lock each server entry. // - random_shuffle(replicas.begin(), replicas.end(), RandomNumberGenerator()); + RandomNumberGenerator rng; + random_shuffle(replicas.begin(), replicas.end(), rng); vector<ReplicaLoadComp::ReplicaLoad> rl; transform(replicas.begin(), replicas.end(), back_inserter(rl), ToReplicaLoad(loadSample)); AdapterEntryPtr adpt = min_element(rl.begin(), rl.end(), ReplicaLoadComp())->second.second; diff --git a/cpp/src/IceGrid/AllocatableObjectCache.cpp b/cpp/src/IceGrid/AllocatableObjectCache.cpp index f5275da7e43..341d110a56b 100644 --- a/cpp/src/IceGrid/AllocatableObjectCache.cpp +++ b/cpp/src/IceGrid/AllocatableObjectCache.cpp @@ -196,7 +196,8 @@ AllocatableObjectCache::allocateByType(const string& type, const ObjectAllocatio } vector<AllocatableObjectEntryPtr> objects = p->second.getObjects(); - random_shuffle(objects.begin(), objects.end(), RandomNumberGenerator()); // TODO: OPTIMIZE + RandomNumberGenerator rng; + random_shuffle(objects.begin(), objects.end(), rng); // TODO: OPTIMIZE try { for(vector<AllocatableObjectEntryPtr>::const_iterator q = objects.begin(); q != objects.end(); ++q) diff --git a/cpp/src/IceGrid/Database.cpp b/cpp/src/IceGrid/Database.cpp index 251745fafb2..1ee45b553e8 100644 --- a/cpp/src/IceGrid/Database.cpp +++ b/cpp/src/IceGrid/Database.cpp @@ -809,7 +809,8 @@ Database::getAdapters(const string& id, int& endpointCount, bool& replicaGroup) adpts.push_back(make_pair(p->first, adpt)); ++p; } - random_shuffle(adpts.begin(), adpts.end(), RandomNumberGenerator()); + RandomNumberGenerator rng; + random_shuffle(adpts.begin(), adpts.end(), rng); replicaGroup = true; endpointCount = static_cast<int>(adpts.size()); return adpts; @@ -1072,7 +1073,8 @@ Ice::ObjectPrx Database::getObjectByTypeOnLeastLoadedNode(const string& type, LoadSample sample) { Ice::ObjectProxySeq objs = getObjectsByType(type); - random_shuffle(objs.begin(), objs.end(), RandomNumberGenerator()); + RandomNumberGenerator rng; + random_shuffle(objs.begin(), objs.end(), rng); vector<pair<Ice::ObjectPrx, float> > objectsWithLoad; objectsWithLoad.reserve(objs.size()); for(Ice::ObjectProxySeq::const_iterator p = objs.begin(); p != objs.end(); ++p) |