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 | |
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')
-rwxr-xr-x | cppe/src/IceE/Connection.cpp | 3 | ||||
-rw-r--r-- | cppe/src/IceE/ObjectAdapter.cpp | 15 | ||||
-rw-r--r-- | cppe/src/IceE/Proxy.cpp | 22 | ||||
-rw-r--r-- | cppe/src/IceE/Reference.cpp | 85 | ||||
-rw-r--r-- | cppe/src/IceE/Reference.h | 24 | ||||
-rw-r--r-- | cppe/src/IceE/ReferenceFactory.cpp | 34 | ||||
-rw-r--r-- | cppe/src/IceE/ReferenceFactory.h | 7 |
7 files changed, 144 insertions, 46 deletions
diff --git a/cppe/src/IceE/Connection.cpp b/cppe/src/IceE/Connection.cpp index b2b6cab3820..db69e10e014 100755 --- a/cppe/src/IceE/Connection.cpp +++ b/cppe/src/IceE/Connection.cpp @@ -955,7 +955,8 @@ Ice::Connection::createProxy(const Identity& ident) const // vector<ConnectionPtr> connections; connections.push_back(const_cast<Connection*>(this)); - ReferencePtr ref = _instance->referenceFactory()->create(ident, "", Reference::ModeTwoway, connections); + ReferencePtr ref = _instance->referenceFactory()->create(ident, Ice::Context(), "", Reference::ModeTwoway, + connections); return _instance->proxyFactory()->referenceToProxy(ref); } diff --git a/cppe/src/IceE/ObjectAdapter.cpp b/cppe/src/IceE/ObjectAdapter.cpp index 4934aa4eb99..5a46d3353cc 100644 --- a/cppe/src/IceE/ObjectAdapter.cpp +++ b/cppe/src/IceE/ObjectAdapter.cpp @@ -544,7 +544,8 @@ Ice::ObjectAdapter::createReverseProxy(const Identity& ident) const // reference. // vector<EndpointPtr> endpoints; - ReferencePtr ref = _instance->referenceFactory()->create(ident, "", Reference::ModeTwoway, connections); + ReferencePtr ref = _instance->referenceFactory()->create(ident, Ice::Context(), "", Reference::ModeTwoway, + connections); return _instance->proxyFactory()->referenceToProxy(ref); } @@ -807,9 +808,11 @@ Ice::ObjectAdapter::newDirectProxy(const Identity& ident, const string& facet) c // Create a reference and return a proxy for this reference. // #ifdef ICEE_HAS_ROUTER - ReferencePtr ref = _instance->referenceFactory()->create(ident, facet, Reference::ModeTwoway, false, endpoints, 0); + ReferencePtr ref = _instance->referenceFactory()->create(ident, Ice::Context(), facet, Reference::ModeTwoway, + false, endpoints, 0); #else - ReferencePtr ref = _instance->referenceFactory()->create(ident, facet, Reference::ModeTwoway, false, endpoints); + ReferencePtr ref = _instance->referenceFactory()->create(ident, Ice::Context(), facet, Reference::ModeTwoway, + false, endpoints); #endif return _instance->proxyFactory()->referenceToProxy(ref); @@ -824,10 +827,12 @@ Ice::ObjectAdapter::newIndirectProxy(const Identity& ident, const string& facet, // #ifdef ICEE_HAS_ROUTER ReferencePtr ref = - _instance->referenceFactory()->create(ident, facet, Reference::ModeTwoway, false, id, 0, _locatorInfo); + _instance->referenceFactory()->create(ident, Ice::Context(), facet, Reference::ModeTwoway, false, id, 0, + _locatorInfo); #else ReferencePtr ref = - _instance->referenceFactory()->create(ident, facet, Reference::ModeTwoway, false, id, _locatorInfo); + _instance->referenceFactory()->create(ident, Ice::Context(), facet, Reference::ModeTwoway, false, id, + _locatorInfo); #endif // diff --git a/cppe/src/IceE/Proxy.cpp b/cppe/src/IceE/Proxy.cpp index 18e4ae676bc..357d43dd63a 100644 --- a/cppe/src/IceE/Proxy.cpp +++ b/cppe/src/IceE/Proxy.cpp @@ -487,6 +487,28 @@ IceProxy::Ice::Object::ice_router(const RouterPrx& router) const #ifdef ICEE_HAS_LOCATOR +string +IceProxy::Ice::Object::ice_getAdapterId() const +{ + return _reference->getAdapterId(); +} + +ObjectPrx +IceProxy::Ice::Object::ice_adapterId(const string& adapterId) const +{ + ReferencePtr ref = _reference->changeAdapterId(adapterId); + if(ref == _reference) + { + return ObjectPrx(const_cast< ::IceProxy::Ice::Object*>(this)); + } + else + { + ObjectPrx proxy(new ::IceProxy::Ice::Object()); + proxy->setup(ref); + return proxy; + } +} + LocatorPrx IceProxy::Ice::Object::ice_getLocator() const { 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 { diff --git a/cppe/src/IceE/Reference.h b/cppe/src/IceE/Reference.h index feead409383..bac2d588107 100644 --- a/cppe/src/IceE/Reference.h +++ b/cppe/src/IceE/Reference.h @@ -63,13 +63,15 @@ public: Ice::CommunicatorPtr getCommunicator() const; virtual Type getType() const = 0; + virtual std::vector<EndpointPtr> getEndpoints() const = 0; + #ifdef ICEE_HAS_ROUTER virtual RouterInfoPtr getRouterInfo() const { return 0; } #endif #ifdef ICEE_HAS_LOCATOR + virtual std::string getAdapterId() const = 0; virtual LocatorInfoPtr getLocatorInfo() const { return 0; } #endif - virtual std::vector<EndpointPtr> getEndpoints() const = 0; // // The change* methods (here and in derived classes) create @@ -85,6 +87,7 @@ public: virtual ReferencePtr changeRouter(const Ice::RouterPrx&) const = 0; #endif #ifdef ICEE_HAS_LOCATOR + virtual ReferencePtr changeAdapterId(const std::string&) const = 0; virtual ReferencePtr changeLocator(const Ice::LocatorPrx&) const = 0; #endif virtual ReferencePtr changeTimeout(int) const; @@ -113,7 +116,8 @@ public: protected: - Reference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const std::string&, Mode, bool); + Reference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const Ice::Context&, + const std::string&, Mode, bool); Reference(const Reference&); void applyOverrides(std::vector<EndpointPtr>&) const; @@ -148,7 +152,7 @@ class FixedReference : public Reference { public: - FixedReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, + FixedReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const Ice::Context&, const std::string&, Mode, const std::vector<Ice::ConnectionPtr>&); virtual Type getType() const; @@ -158,6 +162,8 @@ public: virtual ReferencePtr changeRouter(const Ice::RouterPrx&) const; #endif #ifdef ICEE_HAS_LOCATOR + virtual std::string getAdapterId() const; + virtual ReferencePtr changeAdapterId(const std::string&) const; virtual ReferencePtr changeLocator(const Ice::LocatorPrx&) const; #endif virtual ReferencePtr changeTimeout(int) const; @@ -202,7 +208,7 @@ public: protected: - RoutableReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, + RoutableReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const Ice::Context&, const std::string&, Mode, bool, const RouterInfoPtr&); RoutableReference(const RoutableReference&); @@ -222,7 +228,7 @@ class DirectReference : { public: - DirectReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, + DirectReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const Ice::Context&, const std::string&, Mode, bool, const std::vector<EndpointPtr>& #ifdef ICEE_HAS_ROUTER , const RouterInfoPtr& @@ -233,6 +239,8 @@ public: virtual std::vector<EndpointPtr> getEndpoints() const; #ifdef ICEE_HAS_LOCATOR + virtual std::string getAdapterId() const; + virtual ReferencePtr changeAdapterId(const std::string&) const; virtual ReferencePtr changeLocator(const Ice::LocatorPrx&) const; #endif virtual ReferencePtr changeTimeout(int) const; @@ -272,20 +280,20 @@ class IndirectReference : { public: - IndirectReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, + IndirectReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const Ice::Context&, const std::string&, Mode, bool, const std::string& #ifdef ICEE_HAS_ROUTER , const RouterInfoPtr& #endif , const LocatorInfoPtr&); - const std::string& getAdapterId() const { return _adapterId; } - virtual LocatorInfoPtr getLocatorInfo() const { return _locatorInfo; } virtual Type getType() const; virtual std::vector<EndpointPtr> getEndpoints() const; + virtual std::string getAdapterId() const; + virtual ReferencePtr changeAdapterId(const std::string&) const; virtual ReferencePtr changeLocator(const Ice::LocatorPrx&) const; virtual void streamWrite(BasicStream*) const; diff --git a/cppe/src/IceE/ReferenceFactory.cpp b/cppe/src/IceE/ReferenceFactory.cpp index 5edbea40b77..e24c3ad400b 100644 --- a/cppe/src/IceE/ReferenceFactory.cpp +++ b/cppe/src/IceE/ReferenceFactory.cpp @@ -52,6 +52,7 @@ IceInternal::ReferenceFactory::copy(const Reference* r) const ReferencePtr IceInternal::ReferenceFactory::create(const Identity& ident, + const Context& context, const string& facet, Reference::Mode mode, bool secure, @@ -77,9 +78,9 @@ IceInternal::ReferenceFactory::create(const Identity& ident, // Create new reference // #ifdef ICEE_HAS_ROUTER - return new DirectReference(_instance, _communicator, ident, facet, mode, secure, endpoints, routerInfo); + return new DirectReference(_instance, _communicator, ident, context, facet, mode, secure, endpoints, routerInfo); #else - return new DirectReference(_instance, _communicator, ident, facet, mode, secure, endpoints); + return new DirectReference(_instance, _communicator, ident, context, facet, mode, secure, endpoints); #endif } @@ -87,6 +88,7 @@ IceInternal::ReferenceFactory::create(const Identity& ident, ReferencePtr IceInternal::ReferenceFactory::create(const Identity& ident, + const Context& context, const string& facet, Reference::Mode mode, bool secure, @@ -112,10 +114,10 @@ IceInternal::ReferenceFactory::create(const Identity& ident, // Create new reference // #ifdef ICEE_HAS_ROUTER - return new IndirectReference(_instance, _communicator, ident, facet, mode, secure, adapterId, routerInfo, + return new IndirectReference(_instance, _communicator, ident, context, facet, mode, secure, adapterId, routerInfo, locatorInfo); #else - return new IndirectReference(_instance, _communicator, ident, facet, mode, secure, adapterId, locatorInfo); + return new IndirectReference(_instance, _communicator, ident, context, facet, mode, secure, adapterId, locatorInfo); #endif } @@ -123,6 +125,7 @@ IceInternal::ReferenceFactory::create(const Identity& ident, ReferencePtr IceInternal::ReferenceFactory::create(const Identity& ident, + const Context& context, const string& facet, Reference::Mode mode, const vector<Ice::ConnectionPtr>& fixedConnections) @@ -142,7 +145,7 @@ IceInternal::ReferenceFactory::create(const Identity& ident, // // Create new reference // - return new FixedReference(_instance, _communicator, ident, facet, mode, fixedConnections); + return new FixedReference(_instance, _communicator, ident, context, facet, mode, fixedConnections); } ReferencePtr @@ -428,9 +431,9 @@ IceInternal::ReferenceFactory::create(const string& str) { #ifdef ICEE_HAS_LOCATOR # ifdef ICEE_HAS_ROUTER - return create(ident, facet, mode, secure, "", routerInfo, locatorInfo); + return create(ident, Ice::Context(), facet, mode, secure, "", routerInfo, locatorInfo); # else - return create(ident, facet, mode, secure, "", locatorInfo); + return create(ident, Ice::Context(), facet, mode, secure, "", locatorInfo); # endif #else FeatureNotSupportedException ex(__FILE__, __LINE__); @@ -488,9 +491,9 @@ IceInternal::ReferenceFactory::create(const string& str) } #ifdef ICEE_HAS_ROUTER - return create(ident, facet, mode, secure, endpoints, routerInfo); + return create(ident, Ice::Context(), facet, mode, secure, endpoints, routerInfo); #else - return create(ident, facet, mode, secure, endpoints); + return create(ident, Ice::Context(), facet, mode, secure, endpoints); #endif break; } @@ -534,9 +537,9 @@ IceInternal::ReferenceFactory::create(const string& str) } #ifdef ICEE_HAS_ROUTER - return create(ident, facet, mode, secure, adapter, routerInfo, locatorInfo); + return create(ident, Ice::Context(), facet, mode, secure, adapter, routerInfo, locatorInfo); #else - return create(ident, facet, mode, secure, adapter, locatorInfo); + return create(ident, Ice::Context(), facet, mode, secure, adapter, locatorInfo); #endif #else FeatureNotSupportedException ex(__FILE__, __LINE__); @@ -615,9 +618,9 @@ IceInternal::ReferenceFactory::create(const Identity& ident, BasicStream* s) endpoints.push_back(endpoint); } #ifdef ICEE_HAS_ROUTER - return create(ident, facet, mode, secure, endpoints, routerInfo); + return create(ident, Ice::Context(), facet, mode, secure, endpoints, routerInfo); #else - return create(ident, facet, mode, secure, endpoints); + return create(ident, Ice::Context(), facet, mode, secure, endpoints); #endif } else @@ -626,10 +629,9 @@ IceInternal::ReferenceFactory::create(const Identity& ident, BasicStream* s) LocatorInfoPtr locatorInfo = _instance->locatorManager()->get(getDefaultLocator()); s->read(adapterId); # ifdef ICEE_HAS_ROUTER - return create(ident, facet, mode, secure, adapterId, - routerInfo, locatorInfo); + return create(ident, Ice::Context(), facet, mode, secure, adapterId, routerInfo, locatorInfo); # else - return create(ident, facet, mode, secure, adapterId, locatorInfo); + return create(ident, Ice::Context(), facet, mode, secure, adapterId, locatorInfo); # endif #else throwProxyUnmarshalException(__FILE__, __LINE__); diff --git a/cppe/src/IceE/ReferenceFactory.h b/cppe/src/IceE/ReferenceFactory.h index 9766b0e52e7..21699164bf9 100644 --- a/cppe/src/IceE/ReferenceFactory.h +++ b/cppe/src/IceE/ReferenceFactory.h @@ -31,7 +31,7 @@ public: // // Create a direct reference. // - ReferencePtr create(const ::Ice::Identity&, const ::std::string&, Reference::Mode, bool, + ReferencePtr create(const ::Ice::Identity&, const Ice::Context&, const ::std::string&, Reference::Mode, bool, const ::std::vector<EndpointPtr>& #ifdef ICEE_HAS_ROUTER , const RouterInfoPtr& @@ -41,7 +41,8 @@ public: // Create an indirect reference. // #ifdef ICEE_HAS_LOCATOR - ReferencePtr create(const ::Ice::Identity&, const ::std::string&, Reference::Mode, bool, const ::std::string& + ReferencePtr create(const ::Ice::Identity&, const Ice::Context&, const ::std::string&, Reference::Mode, bool, + const ::std::string& #ifdef ICEE_HAS_ROUTER , const RouterInfoPtr& #endif @@ -50,7 +51,7 @@ public: // // Create a fixed reference. // - ReferencePtr create(const ::Ice::Identity&, const ::std::string&, Reference::Mode, + ReferencePtr create(const ::Ice::Identity&, const Ice::Context&, const ::std::string&, Reference::Mode, const ::std::vector< ::Ice::ConnectionPtr>&); // |