diff options
author | Benoit Foucher <benoit@zeroc.com> | 2007-05-02 14:23:10 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2007-05-02 14:23:10 +0000 |
commit | fe95fb2662c99f5aa6763930be2dba9430aed6af (patch) | |
tree | b4eff6ca265c3df4a83710d1563a89da9a44d7bb /cppe/src/IceE/Reference.cpp | |
parent | Modified emulator version (diff) | |
download | ice-fe95fb2662c99f5aa6763930be2dba9430aed6af.tar.bz2 ice-fe95fb2662c99f5aa6763930be2dba9430aed6af.tar.xz ice-fe95fb2662c99f5aa6763930be2dba9430aed6af.zip |
Added ice_getAdapterId/ice_adapterId.
Diffstat (limited to 'cppe/src/IceE/Reference.cpp')
-rw-r--r-- | cppe/src/IceE/Reference.cpp | 85 |
1 files changed, 72 insertions, 13 deletions
diff --git a/cppe/src/IceE/Reference.cpp b/cppe/src/IceE/Reference.cpp index 12940e60d01..7c3c4925677 100644 --- a/cppe/src/IceE/Reference.cpp +++ b/cppe/src/IceE/Reference.cpp @@ -394,13 +394,14 @@ IceInternal::Reference::operator<(const Reference& r) const } IceInternal::Reference::Reference(const InstancePtr& inst, const CommunicatorPtr& com, const Identity& ident, - const string& fs, Mode md, bool sec) : + const Context& context, const string& fs, Mode md, bool sec) : _hashInitialized(false), _instance(inst), _communicator(com), _mode(md), _secure(sec), _identity(ident), + _context(context), _facet(fs), _overrideTimeout(false), _timeout(-1) @@ -439,8 +440,9 @@ IceInternal::Reference::applyOverrides(vector<EndpointPtr>& endpts) const IceUtil::Shared* IceInternal::upCast(IceInternal::FixedReference* p) { return p; } IceInternal::FixedReference::FixedReference(const InstancePtr& inst, const CommunicatorPtr& com, const Identity& ident, - const string& fs, Mode md, const vector<ConnectionPtr>& fixedConns) : - Reference(inst, com, ident, fs, md, false), + const Context& context, const string& fs, Mode md, + const vector<ConnectionPtr>& fixedConns) : + Reference(inst, com, ident, context, fs, md, false), _fixedConnections(fixedConns) { } @@ -470,6 +472,19 @@ IceInternal::FixedReference::changeRouter(const RouterPrx&) const #ifdef ICEE_HAS_LOCATOR +string +IceInternal::FixedReference::getAdapterId() const +{ + return string(); +} + +ReferencePtr +IceInternal::FixedReference::changeAdapterId(const std::string&) const +{ + throw FixedProxyException(__FILE__, __LINE__); + return 0; // Keep the compiler happy. +} + ReferencePtr IceInternal::FixedReference::changeLocator(const LocatorPrx&) const { @@ -673,9 +688,9 @@ IceInternal::RoutableReference::operator<(const Reference& r) const } IceInternal::RoutableReference::RoutableReference(const InstancePtr& inst, const CommunicatorPtr& com, - const Identity& ident, const string& fs, + const Identity& ident, const Context& context, const string& fs, Mode md, bool sec, const RouterInfoPtr& rtrInfo) : - Reference(inst, com, ident, fs, md, sec), _routerInfo(rtrInfo) + Reference(inst, com, ident, context, fs, md, sec), _routerInfo(rtrInfo) { } @@ -690,19 +705,19 @@ IceUtil::Shared* IceInternal::upCast(IceInternal::DirectReference* p) { return p #ifdef ICEE_HAS_ROUTER IceInternal::DirectReference::DirectReference(const InstancePtr& inst, const CommunicatorPtr& com, - const Identity& ident, const string& fs, Mode md, + const Identity& ident, const Context& context, const string& fs, Mode md, bool sec, const vector<EndpointPtr>& endpts, const RouterInfoPtr& rtrInfo) : - RoutableReference(inst, com, ident, fs, md, sec, rtrInfo), + RoutableReference(inst, com, ident, context, fs, md, sec, rtrInfo), _endpoints(endpts) { } #else IceInternal::DirectReference::DirectReference(const InstancePtr& inst, const CommunicatorPtr& com, - const Identity& ident, const string& fs, Mode md, + const Identity& ident, const Context& context, const string& fs, Mode md, bool sec, const vector<EndpointPtr>& endpts) : - Reference(inst, com, ident, fs, md, sec), + Reference(inst, com, ident, context, fs, md, sec), _endpoints(endpts) { } @@ -722,6 +737,32 @@ IceInternal::DirectReference::getEndpoints() const #ifdef ICEE_HAS_LOCATOR +string +IceInternal::DirectReference::getAdapterId() const +{ + return string(); +} + +ReferencePtr +DirectReference::changeAdapterId(const string& newAdapterId) const +{ + if(!newAdapterId.empty()) + { + LocatorInfoPtr locatorInfo = + getInstance()->locatorManager()->get(getInstance()->referenceFactory()->getDefaultLocator()); + return getInstance()->referenceFactory()->create(getIdentity(), *getContext(), getFacet(), getMode(), + getSecure(), newAdapterId, +#ifdef ICEE_HAS_ROUTER + getRouterInfo(), +#endif + locatorInfo); + } + else + { + return DirectReferencePtr(const_cast<DirectReference*>(this)); + } +} + ReferencePtr IceInternal::DirectReference::changeLocator(const LocatorPrx& newLocator) const { @@ -878,20 +919,20 @@ IceUtil::Shared* IceInternal::upCast(IceInternal::IndirectReference* p) { return #ifdef ICEE_HAS_ROUTER IceInternal::IndirectReference::IndirectReference(const InstancePtr& inst, const CommunicatorPtr& com, - const Identity& ident, const string& fs, + const Identity& ident, const Context& context, const string& fs, Mode md, bool sec, const string& adptid, const RouterInfoPtr& rtrInfo, const LocatorInfoPtr& locInfo) : - RoutableReference(inst, com, ident, fs, md, sec, rtrInfo), + RoutableReference(inst, com, ident, context, fs, md, sec, rtrInfo), _adapterId(adptid), _locatorInfo(locInfo) { } #else IceInternal::IndirectReference::IndirectReference(const InstancePtr& inst, const CommunicatorPtr& com, - const Identity& ident, const string& fs, + const Identity& ident, const Context& context, const string& fs, Mode md, bool sec, const string& adptid, const LocatorInfoPtr& locInfo) : - Reference(inst, com, ident, fs, md, sec), + Reference(inst, com, ident, context, fs, md, sec), _adapterId(adptid), _locatorInfo(locInfo) { @@ -910,6 +951,24 @@ IceInternal::IndirectReference::getEndpoints() const return vector<EndpointPtr>(); } +string +IceInternal::IndirectReference::getAdapterId() const +{ + return _adapterId; +} + +ReferencePtr +IceInternal::IndirectReference::changeAdapterId(const string& newAdapterId) const +{ + if(newAdapterId == _adapterId) + { + return IndirectReferencePtr(const_cast<IndirectReference*>(this)); + } + IndirectReferencePtr r = IndirectReferencePtr::dynamicCast(getInstance()->referenceFactory()->copy(this)); + r->_adapterId = newAdapterId; + return r; +} + ReferencePtr IceInternal::IndirectReference::changeLocator(const LocatorPrx& newLocator) const { |