diff options
author | Benoit Foucher <benoit@zeroc.com> | 2005-07-13 14:24:51 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2005-07-13 14:24:51 +0000 |
commit | 24abfcd7a2c568bc556d244cf4c89660511a2cab (patch) | |
tree | 6ea87a0e4f3d89b78ab00e51598786d5722c645c /cpp/src/IceGrid/ServerI.cpp | |
parent | Added chat demo (diff) | |
download | ice-24abfcd7a2c568bc556d244cf4c89660511a2cab.tar.bz2 ice-24abfcd7a2c568bc556d244cf4c89660511a2cab.tar.xz ice-24abfcd7a2c568bc556d244cf4c89660511a2cab.zip |
Changed server descriptor attributse to be strings to allow the use of
variables
Diffstat (limited to 'cpp/src/IceGrid/ServerI.cpp')
-rw-r--r-- | cpp/src/IceGrid/ServerI.cpp | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/cpp/src/IceGrid/ServerI.cpp b/cpp/src/IceGrid/ServerI.cpp index 0c8d293df6a..724d2e6da1f 100644 --- a/cpp/src/IceGrid/ServerI.cpp +++ b/cpp/src/IceGrid/ServerI.cpp @@ -83,7 +83,8 @@ ServerI::~ServerI() } void -ServerI::load(const ServerDescriptorPtr& descriptor, StringAdapterPrxDict& adapters, const Ice::Current& current) +ServerI::load(const ServerDescriptorPtr& descriptor, StringAdapterPrxDict& adapters, int& activationTimeout, + int& deactivationTimeout, const Ice::Current& current) { while(true) { @@ -102,7 +103,7 @@ ServerI::load(const ServerDescriptorPtr& descriptor, StringAdapterPrxDict& adapt // try { - update(descriptor, adapters, current); + update(descriptor, adapters, activationTimeout, deactivationTimeout, current); } catch(const string& msg) { @@ -499,8 +500,7 @@ ServerI::startInternal(ServerActivation act, const AMD_Server_startPtr& amdCB) else { Lock sync(*this); - int timeout = _desc->activationTimeout > 0 ? _desc->activationTimeout : _waitTime; - _node->getWaitQueue()->add(new WaitForActivationItem(this), IceUtil::Time::seconds(timeout)); + _node->getWaitQueue()->add(new WaitForActivationItem(this), IceUtil::Time::seconds(_activationTimeout)); setStateNoSync(ServerI::WaitForActivation); checkActivation(); notifyAll(); @@ -705,8 +705,7 @@ ServerI::stopInternal(bool kill, const Ice::Current& current) // // Wait for a notification. // - int timeout = _desc->deactivationTimeout > 0 ? _desc->deactivationTimeout : _waitTime; - bool notify = timedWait(IceUtil::Time::seconds(timeout)); + bool notify = timedWait(IceUtil::Time::seconds(_deactivationTimeout)); if(!notify) { assert(oldState == _state); @@ -840,12 +839,26 @@ ServerI::setStateNoSync(InternalServerState st) } void -ServerI::update(const ServerDescriptorPtr& descriptor, StringAdapterPrxDict& adapters, const Ice::Current& current) +ServerI::update(const ServerDescriptorPtr& descriptor, StringAdapterPrxDict& adapters, int& activationTimeout, + int& deactivationTimeout, const Ice::Current& current) { _desc = descriptor; _serverDir = _serversDir + "/" + descriptor->name; - _activation = descriptor->activation; - + _activation = descriptor->activation == "on-demand" ? OnDemand : Manual; + + istringstream at(_desc->activationTimeout); + if(!(at >> _activationTimeout) || !at.eof() || _activationTimeout == 0) + { + _activationTimeout = _waitTime; + } + istringstream dt(_desc->deactivationTimeout); + if(!(dt >> _deactivationTimeout) || !dt.eof() || _deactivationTimeout == 0) + { + _deactivationTimeout = _waitTime; + } + activationTimeout = _activationTimeout; + deactivationTimeout = _deactivationTimeout; + // // Make sure the server directories exists. // |