summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Object.cpp
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2002-07-17 23:53:29 +0000
committerMarc Laukien <marc@zeroc.com>2002-07-17 23:53:29 +0000
commit60f15d8532ffa9d7b727ea423f5fa7c2fec3021b (patch)
tree139ae55e07d67f043245cf604fddfe328b587eed /cpp/src/Ice/Object.cpp
parentfile XMLTransform.h was initially added on branch freeze_xml. (diff)
downloadice-60f15d8532ffa9d7b727ea423f5fa7c2fec3021b.tar.bz2
ice-60f15d8532ffa9d7b727ea423f5fa7c2fec3021b.tar.xz
ice-60f15d8532ffa9d7b727ea423f5fa7c2fec3021b.zip
facet path
Diffstat (limited to 'cpp/src/Ice/Object.cpp')
-rw-r--r--cpp/src/Ice/Object.cpp58
1 files changed, 23 insertions, 35 deletions
diff --git a/cpp/src/Ice/Object.cpp b/cpp/src/Ice/Object.cpp
index 7bad13a59da..c64a503760a 100644
--- a/cpp/src/Ice/Object.cpp
+++ b/cpp/src/Ice/Object.cpp
@@ -343,37 +343,6 @@ Ice::Object::ice_removeAllFacets()
}
ObjectPtr
-Ice::Object::ice_findFacet(const string& name)
-{
- IceUtil::Mutex::Lock sync(_activeFacetMapMutex);
-
- map<string, ObjectPtr>::iterator p = _activeFacetMap.end();
-
- if(_activeFacetMapHint != _activeFacetMap.end())
- {
- if(_activeFacetMapHint->first == name)
- {
- p = _activeFacetMapHint;
- }
- }
-
- if(p == _activeFacetMap.end())
- {
- p = _activeFacetMap.find(name);
- }
-
- if(p != _activeFacetMap.end())
- {
- _activeFacetMapHint = p;
- return p->second;
- }
- else
- {
- return 0;
- }
-}
-
-ObjectPtr
Ice::Object::ice_findFacet(const vector<string>& path, int start)
{
int sz = path.size();
@@ -388,13 +357,32 @@ Ice::Object::ice_findFacet(const vector<string>& path, int start)
return this;
}
- ObjectPtr facet = ice_findFacet(path[start]);
- if(!facet)
{
- return 0;
+ IceUtil::Mutex::Lock sync(_activeFacetMapMutex);
+
+ map<string, ObjectPtr>::iterator p = _activeFacetMap.end();
+
+ if(_activeFacetMapHint != _activeFacetMap.end())
+ {
+ if(_activeFacetMapHint->first == path[start])
+ {
+ p = _activeFacetMapHint;
+ }
+ }
+
+ if(p == _activeFacetMap.end())
+ {
+ p = _activeFacetMap.find(path[start]);
+ }
+
+ if(p != _activeFacetMap.end())
+ {
+ _activeFacetMapHint = p;
+ return p->second->ice_findFacet(path, start + 1);
+ }
}
- return facet->ice_findFacet(path, start + 1);
+ return 0;
}
DispatchStatus