From c3f44e70ea6a8c9bd16281f4b7e2bcd8f7bae47f Mon Sep 17 00:00:00 2001 From: Benoit Foucher Date: Wed, 31 Jan 2018 17:21:12 +0100 Subject: Added support for ice_fixed, ice_getTimeout, ice_getCompress methods (ICE-7996 & ICE-7976) --- cpp/src/Ice/Reference.cpp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'cpp/src/Ice/Reference.cpp') diff --git a/cpp/src/Ice/Reference.cpp b/cpp/src/Ice/Reference.cpp index baf9f9eb719..2f331a1dace 100644 --- a/cpp/src/Ice/Reference.cpp +++ b/cpp/src/Ice/Reference.cpp @@ -658,6 +658,12 @@ IceInternal::FixedReference::getConnectionId() const return string(); } +IceUtil::Optional +IceInternal::FixedReference::getTimeout() const +{ + return IceUtil::Optional(); +} + ReferencePtr IceInternal::FixedReference::changeEndpoints(const vector& /*newEndpoints*/) const { @@ -735,6 +741,18 @@ IceInternal::FixedReference::changeConnectionId(const string&) const return 0; // Keep the compiler happy. } +ReferencePtr +IceInternal::FixedReference::changeConnection(const Ice::ConnectionIPtr& newConnection) const +{ + if(newConnection == _fixedConnection) + { + return FixedReferencePtr(const_cast(this)); + } + FixedReferencePtr r = FixedReferencePtr::dynamicCast(getInstance()->referenceFactory()->copy(this)); + r->_fixedConnection = newConnection; + return r; +} + bool IceInternal::FixedReference::isIndirect() const { @@ -979,6 +997,12 @@ IceInternal::RoutableReference::getConnectionId() const return _connectionId; } +IceUtil::Optional +IceInternal::RoutableReference::getTimeout() const +{ + return _overrideTimeout ? IceUtil::Optional(_timeout) : IceUtil::None; +} + ReferencePtr IceInternal::RoutableReference::changeEncoding(const Ice::EncodingVersion& encoding) const { @@ -1167,6 +1191,19 @@ IceInternal::RoutableReference::changeConnectionId(const string& id) const return r; } +ReferencePtr +IceInternal::RoutableReference::changeConnection(const Ice::ConnectionIPtr& connection) const +{ + return new FixedReference(getInstance(), + getCommunicator(), + getIdentity(), + getFacet(), + getMode(), + getSecure(), + getEncoding(), + connection); +} + bool IceInternal::RoutableReference::isIndirect() const { -- cgit v1.2.3