summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Direct.cpp
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2001-10-18 16:20:20 +0000
committerMarc Laukien <marc@zeroc.com>2001-10-18 16:20:20 +0000
commita7f3ef680b8bdb1374ab031dee2cbaacb9bd6556 (patch)
tree499a7625585636e6cf9d5c2c18405ef3eec5d286 /cpp/src/Ice/Direct.cpp
parentmore facet stuff (diff)
downloadice-a7f3ef680b8bdb1374ab031dee2cbaacb9bd6556.tar.bz2
ice-a7f3ef680b8bdb1374ab031dee2cbaacb9bd6556.tar.xz
ice-a7f3ef680b8bdb1374ab031dee2cbaacb9bd6556.zip
more and more facet stuff...
Diffstat (limited to 'cpp/src/Ice/Direct.cpp')
-rw-r--r--cpp/src/Ice/Direct.cpp30
1 files changed, 20 insertions, 10 deletions
diff --git a/cpp/src/Ice/Direct.cpp b/cpp/src/Ice/Direct.cpp
index 65feb32a9b5..f2345a3ada8 100644
--- a/cpp/src/Ice/Direct.cpp
+++ b/cpp/src/Ice/Direct.cpp
@@ -49,12 +49,21 @@ IceInternal::Direct::Direct(const ObjectAdapterPtr& adapter, const ReferencePtr&
_servant = _locator->locate(_adapter, _reference->identity, _operation, _cookie);
}
}
+
+ if (_servant && !ref->facet.empty())
+ {
+ _facetServant = _servant->_findFacet(ref->facet);
+ if (!_facetServant)
+ {
+ throw FacetNotExistException(__FILE__, __LINE__);
+ }
+ }
}
catch(...)
{
if (_locator && _servant)
{
- _locator->finished(_adapter, _reference->identity, _servant, _operation, _cookie);
+ _locator->finished(_adapter, _reference->identity, _operation, _servant, _cookie);
}
throw;
}
@@ -63,24 +72,25 @@ IceInternal::Direct::Direct(const ObjectAdapterPtr& adapter, const ReferencePtr&
{
throw ObjectNotExistException(__FILE__, __LINE__);
}
-
- if(!ref->facet.empty())
- {
- // Not implemented yet
- throw FacetNotExistException(__FILE__, __LINE__);
- }
}
IceInternal::Direct::~Direct()
{
if (_locator && _servant)
{
- _locator->finished(_adapter, _reference->identity, _servant, _operation, _cookie);
+ _locator->finished(_adapter, _reference->identity, _operation, _servant, _cookie);
}
}
const ObjectPtr&
-IceInternal::Direct::servant()
+IceInternal::Direct::facetServant()
{
- return _servant;
+ if (_facetServant)
+ {
+ return _facetServant;
+ }
+ else
+ {
+ return _servant;
+ }
}