diff options
Diffstat (limited to 'cpp/src/IceGrid/ServerI.cpp')
-rw-r--r-- | cpp/src/IceGrid/ServerI.cpp | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/cpp/src/IceGrid/ServerI.cpp b/cpp/src/IceGrid/ServerI.cpp index 7132944a443..d4eacad1224 100644 --- a/cpp/src/IceGrid/ServerI.cpp +++ b/cpp/src/IceGrid/ServerI.cpp @@ -910,6 +910,13 @@ ServerI::getDistribution() const return _desc ? _desc->distrib : InternalDistributionDescriptorPtr(); } +bool +ServerI::dependsOnApplicationDistrib() const +{ + Lock sync(*this); + return _desc ? _desc->applicationDistrib : false; +} + void ServerI::start(ServerActivation activation, const AMD_Server_startPtr& amdCB) { @@ -1521,7 +1528,7 @@ ServerI::destroy() adpts = _adapters; } - _node->removeServer(this, _desc->application, _desc->applicationDistrib); + _node->removeServer(this, _desc->application); try { @@ -1695,13 +1702,20 @@ ServerI::update() { throw DeploymentException(msg); } - + if(oldDescriptor) { - _node->removeServer(this, oldDescriptor->application, oldDescriptor->applicationDistrib); + if(oldDescriptor->application != _desc->application) + { + _node->removeServer(this, oldDescriptor->application); + _node->addServer(this, _desc->application); + } } - _node->addServer(this, _desc->application, _desc->applicationDistrib); - + else + { + _node->addServer(this, _desc->application); + } + AdapterPrxDict adapters; for(ServerAdapterDict::const_iterator p = _adapters.begin(); p != _adapters.end(); ++p) { |