diff options
author | Marc Laukien <marc@zeroc.com> | 2001-10-18 16:20:20 +0000 |
---|---|---|
committer | Marc Laukien <marc@zeroc.com> | 2001-10-18 16:20:20 +0000 |
commit | a7f3ef680b8bdb1374ab031dee2cbaacb9bd6556 (patch) | |
tree | 499a7625585636e6cf9d5c2c18405ef3eec5d286 /cpp/src/Ice/Direct.cpp | |
parent | more facet stuff (diff) | |
download | ice-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.cpp | 30 |
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; + } } |