summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/AdapterCache.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2005-10-06 15:15:02 +0000
committerBenoit Foucher <benoit@zeroc.com>2005-10-06 15:15:02 +0000
commit0520bfc67149d75fbf2dffbeac27c43164f16e14 (patch)
tree962c18a611b2c530984ab89dc882061e0a335c20 /cpp/src/IceGrid/AdapterCache.cpp
parentIceGrid.ObjectNotExist -> IceGrid.ObjectNotregistered (diff)
downloadice-0520bfc67149d75fbf2dffbeac27c43164f16e14.tar.bz2
ice-0520bfc67149d75fbf2dffbeac27c43164f16e14.tar.xz
ice-0520bfc67149d75fbf2dffbeac27c43164f16e14.zip
Added support for default templates.
Added support for default parameters. Added support for findObjectByTypeOnLeastLoadedNode Added default templates descriptor (config/templates.xml)
Diffstat (limited to 'cpp/src/IceGrid/AdapterCache.cpp')
-rw-r--r--cpp/src/IceGrid/AdapterCache.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/cpp/src/IceGrid/AdapterCache.cpp b/cpp/src/IceGrid/AdapterCache.cpp
index a0d532c5fbd..be78dc91349 100644
--- a/cpp/src/IceGrid/AdapterCache.cpp
+++ b/cpp/src/IceGrid/AdapterCache.cpp
@@ -285,6 +285,27 @@ AdapterEntry::getProxies(int& nReplicas)
return adapters;
}
+float
+AdapterEntry::getLeastLoadedNodeLoad(LoadSample loadSample) const
+{
+ ReplicaSeq replicas;
+ {
+ Lock sync(*this);
+ if(_replicas.empty())
+ {
+ throw AdapterNotExistException(_id, "");
+ }
+ replicas = _replicas;
+ }
+
+ //
+ // This must be done outside the synchronization block since
+ // min_element() will call and lock each server entry.
+ //
+ random_shuffle(replicas.begin(), replicas.end());
+ return min_element(replicas.begin(), replicas.end(), ServerLoadCI(loadSample))->second->getLoad(loadSample);
+}
+
string
AdapterEntry::getApplication() const
{