summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/ServantManager.cpp
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2004-05-19 19:07:58 +0000
committerMarc Laukien <marc@zeroc.com>2004-05-19 19:07:58 +0000
commit2cdceca8d842006ebb8e205b1ed98661aeaabf2c (patch)
treea0e98d6e228c59a843dbccb7dbed9647db0a8f87 /cpp/src/Ice/ServantManager.cpp
parentformatting changes (diff)
downloadice-2cdceca8d842006ebb8e205b1ed98661aeaabf2c.tar.bz2
ice-2cdceca8d842006ebb8e205b1ed98661aeaabf2c.tar.xz
ice-2cdceca8d842006ebb8e205b1ed98661aeaabf2c.zip
findAllFacets
Diffstat (limited to 'cpp/src/Ice/ServantManager.cpp')
-rw-r--r--cpp/src/Ice/ServantManager.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/cpp/src/Ice/ServantManager.cpp b/cpp/src/Ice/ServantManager.cpp
index 2e1bba0bb0a..0f926568a7e 100644
--- a/cpp/src/Ice/ServantManager.cpp
+++ b/cpp/src/Ice/ServantManager.cpp
@@ -168,6 +168,33 @@ IceInternal::ServantManager::findServant(const Identity& ident, const string& fa
}
}
+FacetMap
+IceInternal::ServantManager::findAllFacets(const Identity& ident) const
+{
+ IceUtil::Mutex::Lock sync(*this);
+
+ assert(_instance); // Must not be called after destruction.
+
+ ServantMapMap::iterator p = _servantMapMapHint;
+
+ ServantMapMap& servantMapMap = const_cast<ServantMapMap&>(_servantMapMap);
+
+ if(p == servantMapMap.end() || p->first != ident)
+ {
+ p = servantMapMap.find(ident);
+ }
+
+ if(p == servantMapMap.end())
+ {
+ return FacetMap();
+ }
+ else
+ {
+ _servantMapMapHint = p;
+ return p->second;
+ }
+}
+
bool
IceInternal::ServantManager::hasServant(const Identity& ident) const
{