diff options
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/Ice/Initialize.cpp | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/cpp/src/Ice/Initialize.cpp b/cpp/src/Ice/Initialize.cpp index 87b1926f5f5..e2a334037c0 100644 --- a/cpp/src/Ice/Initialize.cpp +++ b/cpp/src/Ice/Initialize.cpp @@ -404,6 +404,17 @@ Ice::CommunicatorHolder::CommunicatorHolder(shared_ptr<Communicator> communicato { } +Ice::CommunicatorHolder& +Ice::CommunicatorHolder::operator=(CommunicatorHolder&& other) +{ + if(_communicator) + { + _communicator->destroy(); + } + _communicator = std::move(other._communicator); + return *this; +} + #else // C++98 mapping Ice::CommunicatorHolder::CommunicatorHolder(int& argc, const char* argv[], const InitializationData& initData, @@ -491,6 +502,12 @@ Ice::CommunicatorHolder::communicator() const return _communicator; } +const Ice::CommunicatorPtr& +Ice::CommunicatorHolder::operator->() const +{ + return _communicator; +} + Ice::CommunicatorPtr Ice::CommunicatorHolder::release() { @@ -503,12 +520,6 @@ Ice::CommunicatorHolder::release() #endif } -const Ice::CommunicatorPtr& -Ice::CommunicatorHolder::operator->() const -{ - return _communicator; -} - InstancePtr IceInternal::getInstance(const CommunicatorPtr& communicator) { |