diff options
Diffstat (limited to 'modules/CIAO/tools/Config_Handlers/IRDD_Handler.cpp')
-rw-r--r-- | modules/CIAO/tools/Config_Handlers/IRDD_Handler.cpp | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/modules/CIAO/tools/Config_Handlers/IRDD_Handler.cpp b/modules/CIAO/tools/Config_Handlers/IRDD_Handler.cpp new file mode 100644 index 00000000000..34318ee8d4c --- /dev/null +++ b/modules/CIAO/tools/Config_Handlers/IRDD_Handler.cpp @@ -0,0 +1,122 @@ +// $Id$ + +#include "IRDD_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "ciao/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::instance_resource_deployment_descr ( + 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; + } + } + +} |