summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/DescriptorHelper.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2005-07-13 14:24:51 +0000
committerBenoit Foucher <benoit@zeroc.com>2005-07-13 14:24:51 +0000
commit24abfcd7a2c568bc556d244cf4c89660511a2cab (patch)
tree6ea87a0e4f3d89b78ab00e51598786d5722c645c /cpp/src/IceGrid/DescriptorHelper.cpp
parentAdded chat demo (diff)
downloadice-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/DescriptorHelper.cpp')
-rw-r--r--cpp/src/IceGrid/DescriptorHelper.cpp38
1 files changed, 35 insertions, 3 deletions
diff --git a/cpp/src/IceGrid/DescriptorHelper.cpp b/cpp/src/IceGrid/DescriptorHelper.cpp
index 32b396fc0ee..18398e16d17 100644
--- a/cpp/src/IceGrid/DescriptorHelper.cpp
+++ b/cpp/src/IceGrid/DescriptorHelper.cpp
@@ -1359,13 +1359,13 @@ ServerDescriptorHelper::ServerDescriptorHelper(const DescriptorHelper& helper, c
_descriptor->exe = attributes("exe");
}
_descriptor->interpreter = interpreter;
- _descriptor->activationTimeout = attributes.asInt("activation-timeout", "0");
- _descriptor->deactivationTimeout = attributes.asInt("deactivation-timeout", "0");
+ _descriptor->activationTimeout = attributes("activation-timeout", "0");
+ _descriptor->deactivationTimeout = attributes("deactivation-timeout", "0");
ComponentDescriptorHelper::init(_descriptor, attrs);
_descriptor->pwd = attributes("pwd", "");
- _descriptor->activation = (attributes("activation", "manual") == "on-demand") ? OnDemand : Manual;
+ _descriptor->activation = attributes("activation", "manual");
if(interpreter == "icebox" || interpreter == "java-icebox")
{
@@ -1646,6 +1646,38 @@ ServerDescriptorHelper::instantiateImpl(const ServerDescriptorPtr& desc, set<str
substitute(desc->exe);
substitute(desc->pwd);
+ substitute(desc->activation);
+ if(!desc->activation.empty() && desc->activation != "manual" && desc->activation != "on-demand")
+ {
+ DeploymentException ex;
+ ex.reason = "invalid server `" + desc->name + "': unknown activation `" + desc->activation + "'";
+ throw ex;
+ }
+ substitute(desc->activationTimeout);
+ if(!desc->activationTimeout.empty())
+ {
+ int value;
+ istringstream v(desc->activationTimeout);
+ if(!(v >> value))
+ {
+ DeploymentException ex;
+ ex.reason = "invalid server `" + desc->name + "': activation timeout is not an integer value";
+ throw ex;
+ }
+ }
+ substitute(desc->deactivationTimeout);
+ if(!desc->deactivationTimeout.empty())
+ {
+ int value;
+ istringstream v(desc->deactivationTimeout);
+ if(!(v >> value))
+ {
+ DeploymentException ex;
+ ex.reason = "invalid server `" + desc->name + "': deactivation timeout is not an integer value";
+ throw ex;
+ }
+ }
+
for_each(desc->options.begin(), desc->options.end(), substitute);
for_each(desc->envs.begin(), desc->envs.end(), substitute);
substitute(desc->interpreter);