From ff60c74a8904d6bea748a167b0945d515532b356 Mon Sep 17 00:00:00 2001 From: Bernard Normier Date: Wed, 7 Feb 2024 22:57:56 -0500 Subject: [PATCH] Make _batchRequestQueue const --- cpp/include/Ice/Proxy.h | 10 ++++------ cpp/src/Ice/Proxy.cpp | 21 +++++++-------------- cpp/src/Ice/Reference.h | 1 + 3 files changed, 12 insertions(+), 20 deletions(-) diff --git a/cpp/include/Ice/Proxy.h b/cpp/include/Ice/Proxy.h index 754acdf9d28..54f03e02052 100644 --- a/cpp/include/Ice/Proxy.h +++ b/cpp/include/Ice/Proxy.h @@ -522,9 +522,7 @@ class ICE_API ObjectPrx : public Proxy, public ::std::enable_shared_f virtual ~ObjectPrx() = default; /// \cond INTERNAL - ObjectPrx(const IceInternal::ReferencePtr& ref) noexcept : _reference(ref) - { - } + ObjectPrx(const IceInternal::ReferencePtr& ref) noexcept; /// \endcond /** @@ -1162,7 +1160,7 @@ class ICE_API ObjectPrx : public Proxy, public ::std::enable_shared_f void _checkTwowayOnly(const ::std::string&) const; ::IceInternal::RequestHandlerPtr _getRequestHandler(); - ::IceInternal::BatchRequestQueuePtr _getBatchRequestQueue(); + ::IceInternal::BatchRequestQueuePtr _getBatchRequestQueue() const { return _batchRequestQueue; } ::IceInternal::RequestHandlerPtr _setRequestHandler(const ::IceInternal::RequestHandlerPtr&); void _updateRequestHandler(const ::IceInternal::RequestHandlerPtr&, const ::IceInternal::RequestHandlerPtr&); @@ -1225,9 +1223,9 @@ class ICE_API ObjectPrx : public Proxy, public ::std::enable_shared_f IceInternal::ReferencePtr _timeout(int) const; IceInternal::ReferencePtr _twoway() const; - const ::IceInternal::ReferencePtr _reference; + const IceInternal::ReferencePtr _reference; ::IceInternal::RequestHandlerPtr _requestHandler; - ::IceInternal::BatchRequestQueuePtr _batchRequestQueue; + const IceInternal::BatchRequestQueuePtr _batchRequestQueue; mutable std::mutex _mutex; }; diff --git a/cpp/src/Ice/Proxy.cpp b/cpp/src/Ice/Proxy.cpp index e6b05347d2f..a025a3f7aed 100644 --- a/cpp/src/Ice/Proxy.cpp +++ b/cpp/src/Ice/Proxy.cpp @@ -149,9 +149,13 @@ operator==(const ObjectPrx& lhs, const ObjectPrx& rhs) } -Ice::ObjectPrx::ObjectPrx(const ObjectPrx& other) noexcept : - enable_shared_from_this(), // the copy is independent of other - _reference(other._reference) +Ice::ObjectPrx::ObjectPrx(const ReferencePtr& ref) noexcept : + _reference(ref), + _batchRequestQueue(ref->isBatch() ? _reference->getBatchRequestQueue() : nullptr) +{ +} + +Ice::ObjectPrx::ObjectPrx(const ObjectPrx& other) noexcept : ObjectPrx(other._reference) { lock_guard lock(other._mutex); _requestHandler = other._requestHandler; @@ -501,17 +505,6 @@ Ice::ObjectPrx::_getRequestHandler() return _reference->getRequestHandler(shared_from_this()); } -IceInternal::BatchRequestQueuePtr -Ice::ObjectPrx::_getBatchRequestQueue() -{ - lock_guard lock(_mutex); - if(!_batchRequestQueue) - { - _batchRequestQueue = _reference->getBatchRequestQueue(); - } - return _batchRequestQueue; -} - ::IceInternal::RequestHandlerPtr Ice::ObjectPrx::_setRequestHandler(const ::IceInternal::RequestHandlerPtr& handler) { diff --git a/cpp/src/Ice/Reference.h b/cpp/src/Ice/Reference.h index e89e22a4af7..9be76217186 100644 --- a/cpp/src/Ice/Reference.h +++ b/cpp/src/Ice/Reference.h @@ -59,6 +59,7 @@ class Reference : public std::enable_shared_from_this }; Mode getMode() const { return _mode; } + bool isBatch() const { return _mode == ModeBatchOneway || _mode == ModeBatchDatagram; } bool getSecure() const { return _secure; } const Ice::ProtocolVersion& getProtocol() const { return _protocol; } const Ice::EncodingVersion& getEncoding() const { return _encoding; }