summaryrefslogtreecommitdiff
path: root/CIAO/tools/Config_Handlers/IRDD_Handler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'CIAO/tools/Config_Handlers/IRDD_Handler.cpp')
-rw-r--r--CIAO/tools/Config_Handlers/IRDD_Handler.cpp121
1 files changed, 121 insertions, 0 deletions
diff --git a/CIAO/tools/Config_Handlers/IRDD_Handler.cpp b/CIAO/tools/Config_Handlers/IRDD_Handler.cpp
new file mode 100644
index 00000000000..97443a495ba
--- /dev/null
+++ b/CIAO/tools/Config_Handlers/IRDD_Handler.cpp
@@ -0,0 +1,121 @@
+// $Id$
+
+#include "IRDD_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "DAnCE/Deployment/Deployment_DataC.h"
+#include "Property_Handler.h"
+#include "ciao/CIAO_common.h"
+
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+
+ IRDD_Handler::IRDD_Handler (void)
+ {
+ }
+
+ IRDD_Handler::~IRDD_Handler (void)
+ {
+ }
+
+
+ void
+ IRDD_Handler::handle_irdd (const InstanceResourceDeploymentDescription& desc,
+ Deployment::InstanceResourceDeploymentDescription& toconfig)
+ throw (Config_Error)
+ {
+ CIAO_TRACE("IRDD_Handler::instance_resource_deployment_descr");
+
+ switch (desc.resourceUsage ().integral ())
+ {
+ case ResourceUsageKind::None_l:
+ toconfig.resourceUsage = Deployment::None;
+ break;
+
+ case ResourceUsageKind::InstanceUsesResource_l:
+ toconfig.resourceUsage = Deployment::InstanceUsesResource;
+ break;
+
+ case ResourceUsageKind::ResourceUsesInstance_l:
+ toconfig.resourceUsage = Deployment::ResourceUsesInstance;
+ break;
+
+ case ResourceUsageKind::PortUsesResource_l:
+ toconfig.resourceUsage = Deployment::PortUsesResource;
+ break;
+
+ case ResourceUsageKind::ResourceUsesPort_l:
+ toconfig.resourceUsage = Deployment::ResourceUsesPort;
+ break;
+
+ default:
+ throw Config_Error (desc.requirementName (),
+ "Unknown ResourceUsageKind.");
+ break;
+ }
+
+ toconfig.requirementName = desc.requirementName ().c_str ();
+
+ toconfig.resourceName= desc.resourceName ().c_str ();
+
+ toconfig.property.length (desc.count_property ());
+ std::for_each (desc.begin_property (),
+ desc.end_property (),
+ Property_Functor (toconfig.property));
+ }
+
+ InstanceResourceDeploymentDescription
+ IRDD_Handler::instance_resource_deployment_descr (
+ const Deployment::InstanceResourceDeploymentDescription& src)
+ throw (Config_Error)
+ {
+ CIAO_TRACE("IRDD_Handler::instance_resource_deployment_descr - reverse");
+
+ XMLSchema::string< char > reqname ((src.requirementName));
+ XMLSchema::string< char > resname ((src.resourceName));
+
+ InstanceResourceDeploymentDescription irdd (ResourceUsageKind::None,
+ reqname,
+ resname);
+
+ switch (src.resourceUsage)
+ {
+ case Deployment::None:
+ irdd.resourceUsage (ResourceUsageKind::None);
+ break;
+
+ case Deployment::InstanceUsesResource:
+ irdd.resourceUsage (ResourceUsageKind::InstanceUsesResource);
+ break;
+
+ case Deployment::ResourceUsesInstance:
+ irdd.resourceUsage (ResourceUsageKind::ResourceUsesInstance);
+ break;
+
+ case Deployment::PortUsesResource:
+ irdd.resourceUsage (ResourceUsageKind::PortUsesResource);
+ break;
+
+ case Deployment::ResourceUsesPort:
+ irdd.resourceUsage (ResourceUsageKind::ResourceUsesPort);
+ break;
+
+ default:
+ throw Config_Error (src.resourceName.in (),
+ "Unknown ResourceUsageKind.");
+ break;
+ }
+
+ for (CORBA::ULong i = 0; i < src.property.length (); ++i)
+ {
+ irdd.add_property (Property_Handler::get_property (src.property[i]));
+ }
+
+
+ return irdd;
+ }
+ }
+
+}