diff options
author | Marc Laukien <marc@zeroc.com> | 2004-05-19 19:07:58 +0000 |
---|---|---|
committer | Marc Laukien <marc@zeroc.com> | 2004-05-19 19:07:58 +0000 |
commit | 2cdceca8d842006ebb8e205b1ed98661aeaabf2c (patch) | |
tree | a0e98d6e228c59a843dbccb7dbed9647db0a8f87 /cpp/src/Ice/ServantManager.cpp | |
parent | formatting changes (diff) | |
download | ice-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.cpp | 27 |
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 { |