summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Reference.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2018-01-31 17:21:12 +0100
committerBenoit Foucher <benoit@zeroc.com>2018-01-31 17:21:12 +0100
commitc3f44e70ea6a8c9bd16281f4b7e2bcd8f7bae47f (patch)
treea02e199af243136b4dc4a83929e8c9a185c9dcd8 /cpp/src/Ice/Reference.cpp
parentUpdated AutoStart description (diff)
downloadice-c3f44e70ea6a8c9bd16281f4b7e2bcd8f7bae47f.tar.bz2
ice-c3f44e70ea6a8c9bd16281f4b7e2bcd8f7bae47f.tar.xz
ice-c3f44e70ea6a8c9bd16281f4b7e2bcd8f7bae47f.zip
Added support for ice_fixed, ice_getTimeout, ice_getCompress methods (ICE-7996 & ICE-7976)
Diffstat (limited to 'cpp/src/Ice/Reference.cpp')
-rw-r--r--cpp/src/Ice/Reference.cpp37
1 files changed, 37 insertions, 0 deletions
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<int>
+IceInternal::FixedReference::getTimeout() const
+{
+ return IceUtil::Optional<int>();
+}
+
ReferencePtr
IceInternal::FixedReference::changeEndpoints(const vector<EndpointIPtr>& /*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<FixedReference*>(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<int>
+IceInternal::RoutableReference::getTimeout() const
+{
+ return _overrideTimeout ? IceUtil::Optional<int>(_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
{