summaryrefslogtreecommitdiff
path: root/modules/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.cpp')
-rw-r--r--modules/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.cpp126
1 files changed, 126 insertions, 0 deletions
diff --git a/modules/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.cpp b/modules/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.cpp
new file mode 100644
index 00000000000..55f0b187d7d
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.cpp
@@ -0,0 +1,126 @@
+//$Id$
+
+#include "SatisfierProperty_Handler.h"
+#include "Any_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "DAnCE/Deployment/Deployment_DataC.h"
+#include "ciao/CIAO_common.h"
+#include "Utils/Exceptions.h"
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+
+ SatisfierProperty_Handler::SatisfierProperty_Handler (void)
+ {
+ }
+
+ SatisfierProperty_Handler::~SatisfierProperty_Handler (void)
+ {
+ }
+
+ void
+ SatisfierProperty_Handler::handle_sat_property (
+ const SatisfierProperty& desc,
+ Deployment::SatisfierProperty& toconfig)
+ {
+ CIAO_TRACE("SatisfierProperty_Handler::get_sat_property");
+
+ toconfig.name = ACE_TEXT_ALWAYS_CHAR (desc.name ().c_str ());
+
+ switch (desc.kind ().integral ())
+ {
+ case SatisfierPropertyKind::Quantity_l:
+ toconfig.kind = Deployment::Quantity;
+ break;
+
+ case SatisfierPropertyKind::Capacity_l:
+ toconfig.kind = Deployment::Capacity;
+ break;
+
+ case SatisfierPropertyKind::Minimum_l:
+ toconfig.kind = Deployment::Minimum;
+ break;
+
+ case SatisfierPropertyKind::Maximum_l:
+ toconfig.kind = Deployment::Maximum;
+ break;
+
+ // case SatisfierPropertyKind::Attribute_l:
+ //toconfig.kind = Deployment::_Attribute;
+ //break;
+
+ case SatisfierPropertyKind::Selection_l:
+ toconfig.kind = Deployment::Selection;
+ break;
+
+ default:
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unknown SatisfierPropertyKind\n")));
+ throw Config_Error (desc.name (), ACE_TEXT ("Unknown SatisfierPropertyKind"));
+
+ }
+
+ toconfig.dynamic = desc.dynamic ();
+
+ try
+ {
+ Any_Handler::extract_into_any (desc.value (),
+ toconfig.value);
+ }
+ catch (Config_Error &ex)
+ {
+ ex.name_ = desc.name ();
+ throw ex;
+ }
+ }
+
+ SatisfierProperty
+ SatisfierProperty_Handler::get_sat_property (
+ const Deployment::SatisfierProperty& src)
+ {
+ CIAO_TRACE("SatisfierProperty_Handler::get_sat_property - reverse");
+
+ ::XMLSchema::string< ACE_TCHAR > name (ACE_TEXT_CHAR_TO_TCHAR ((src.name)));
+ SatisfierPropertyKind::Value kind;
+
+ const SatisfierPropertyKind *spk = 0;
+
+ switch (src.kind)
+ {
+ case Deployment::Quantity:
+ spk = &SatisfierPropertyKind::Quantity;
+ break;
+
+ case Deployment::Capacity:
+ spk = &SatisfierPropertyKind::Capacity;
+ break;
+
+ case Deployment::Minimum:
+ spk = &SatisfierPropertyKind::Minimum;
+ break;
+
+ case Deployment::Maximum:
+ spk = &SatisfierPropertyKind::Maximum;
+ break;
+
+ // case Deployment::_Attribute:
+ //kind = SatisfierPropertyKind::Attribute_l;
+ //break;
+
+ case Deployment::Selection:
+ kind = SatisfierPropertyKind::Selection_l;
+ break;
+
+ default:
+ throw Plan_Error (ACE_TEXT ("Invalid SatisfierPropertyKind"));
+ }
+
+ bool dynamic = src.dynamic;
+
+ Any value (Any_Handler::get_any (src.value));
+
+ return SatisfierProperty (name, *spk, dynamic, value);
+ }
+
+ }
+}