diff options
Diffstat (limited to 'TAO/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.cpp')
-rw-r--r-- | TAO/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.cpp | 413 |
1 files changed, 210 insertions, 203 deletions
diff --git a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.cpp b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.cpp index 782027a38fb..d5e39d485da 100644 --- a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.cpp +++ b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.cpp @@ -27,218 +27,222 @@ namespace CIAO IDREF_Base<CORBA::ULong> CID_Handler::IDREF; - namespace + struct Capability_Handler { - struct Capability_Handler - { - static void get_capability (const Capability &desc, - ::Deployment::Capability &toconfig) - { - CIAO_TRACE ("Capability_Handler::get_capability"); - - toconfig.name = desc.name ().c_str (); - - toconfig.resourceType.length (desc.count_resourceType ()); - std::for_each (desc.begin_resourceType (), - desc.end_resourceType (), - String_Seq_Functor (toconfig.resourceType)); - - toconfig.property.length (desc.count_property ()); - std::for_each (desc.begin_property (), - desc.end_property (), - SatisfierProperty_Functor (toconfig.property)); - } - - static Capability get_capability (const ::Deployment::Capability &src) - { - CIAO_TRACE ("Capability_Handler::get_capability - reverse"); - - Capability retval (src.name.in ()); - - for (CORBA::ULong i = 0; i < src.resourceType.length (); ++i) - retval.add_resourceType (src.resourceType[i]); - - for (CORBA::ULong i = 0; i < src.property.length (); ++i) - retval.add_property (SatisfierProperty_Handler::get_sat_property (src.property[i])); - - return retval; - } - }; - - typedef Sequence_Handler < Capability, - ::Deployment::Capabilities, - ::Deployment::Capability, - Capability_Handler::get_capability > Capability_Functor; - - struct IR_Handler - { - static void get_ir (const ImplementationRequirement &desc, - ::Deployment::ImplementationRequirement &toconfig) - { - CIAO_TRACE ("IR_Handler::get_ir"); - - if (desc.resourceUsage_p ()) - { - 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.name (), - "Unknown ResourceUsageKind."); - break; - } - } - - if (desc.resourcePort_p ()) - toconfig.resourcePort = desc.resourcePort ().c_str (); - - if (desc.componentPort_p ()) - toconfig.componentPort = desc.componentPort ().c_str (); - - toconfig.resourceType = desc.resourceType ().c_str (); - toconfig.name = desc.name ().c_str (); - - std::for_each (desc.begin_property (), - desc.end_property (), - Property_Functor (toconfig.property )); - } - - static ImplementationRequirement - get_ir (const ::Deployment::ImplementationRequirement &src) - { - CIAO_TRACE ("IR_Handler::get_ir - reverse"); - - ImplementationRequirement retval (src.resourceType.in (), - src.name.in ()); - - if (src.resourceUsage.length () == 1) - switch (src.resourceUsage[0]) - { - case Deployment::None: - retval.resourceUsage (ResourceUsageKind::None); - break; + static void handle_capability (const Capability &desc, + ::Deployment::Capability &toconfig) + { + CIAO_TRACE ("Capability_Handler::get_capability"); - case Deployment::InstanceUsesResource: - retval.resourceUsage (ResourceUsageKind::InstanceUsesResource); - break; + toconfig.name = desc.name ().c_str (); - case Deployment::ResourceUsesInstance: - retval.resourceUsage (ResourceUsageKind::ResourceUsesInstance); - break; + toconfig.resourceType.length (desc.count_resourceType ()); + std::for_each (desc.begin_resourceType (), + desc.end_resourceType (), + String_Seq_Functor (toconfig.resourceType)); - case Deployment::PortUsesResource: - retval.resourceUsage (ResourceUsageKind::PortUsesResource); - break; + toconfig.property.length (desc.count_property ()); + std::for_each (desc.begin_property (), + desc.end_property (), + SatisfierProperty_Functor (toconfig.property)); + } - case Deployment::ResourceUsesPort: - retval.resourceUsage (ResourceUsageKind::ResourceUsesPort); - break; + static Capability get_capability (const ::Deployment::Capability &src) + { + CIAO_TRACE ("Capability_Handler::get_capability - reverse"); - default: - throw Config_Error (src.name.in (), - "Unknown ResourceUsageKind."); - break; - } + Capability retval (src.name.in ()); - retval.resourcePort (src.resourcePort.in ()); + for (CORBA::ULong i = 0; i < src.resourceType.length (); ++i) + retval.add_resourceType (src.resourceType[i]); - retval.componentPort (src.componentPort.in ()); + for (CORBA::ULong i = 0; i < src.property.length (); ++i) + retval.add_property (SatisfierProperty_Handler::get_sat_property (src.property[i])); - for (CORBA::ULong i = 0; i < src.property.length (); ++i) - retval.add_property (Property_Handler::get_property (src.property[i])); + return retval; + } + }; - return retval; - } - }; - - typedef Sequence_Handler < ImplementationRequirement, - ::Deployment::ImplementationRequirements, - ::Deployment::ImplementationRequirement, - IR_Handler::get_ir > IR_Functor; - - - - struct MID_Handler - { - static void get_mid (const MonolithicImplementationDescription &desc, - ::Deployment::MonolithicImplementationDescription &toconfig) - { - CIAO_TRACE ("MID_Handler::get_mid"); - - toconfig.nodeExecParameter.length (desc.count_nodeExecParameter ()); - std::for_each (desc.begin_nodeExecParameter (), - desc.end_nodeExecParameter (), - Property_Functor (toconfig.nodeExecParameter)); - - toconfig.componentExecParameter.length (desc.count_componentExecParameter ()); - std::for_each (desc.begin_componentExecParameter (), - desc.end_componentExecParameter (), - Property_Functor (toconfig.componentExecParameter)); - - toconfig.deployRequirement.length (desc.count_deployRequirement ()); - std::for_each (desc.begin_deployRequirement (), - desc.end_deployRequirement (), - IR_Functor (toconfig.deployRequirement)); - - toconfig.primaryArtifact.length (desc.count_primaryArtifact ()); - std::for_each (desc.begin_primaryArtifact (), - desc.end_primaryArtifact (), - NIA_Functor (toconfig.primaryArtifact)); - } - - static MonolithicImplementationDescription - get_mid (const ::Deployment::MonolithicImplementationDescription &src) - { - CIAO_TRACE ("MID_Handler::get_mid - reverse"); - - MonolithicImplementationDescription retval; + typedef Sequence_Handler < Capability, + ::Deployment::Capabilities, + ::Deployment::Capability, + Capability_Handler::handle_capability > Capability_Functor; - for (CORBA::ULong i = 0; i < src.nodeExecParameter.length (); ++i) - retval.add_nodeExecParameter - (Property_Handler::get_property (src.nodeExecParameter[i])); - - for (CORBA::ULong i = 0; i < src.componentExecParameter.length (); ++i) - retval.add_componentExecParameter - (Property_Handler::get_property (src.componentExecParameter[i])); - - for (CORBA::ULong i = 0; i < src.deployRequirement.length (); ++i) - retval.add_deployRequirement - (IR_Handler::get_ir (src.deployRequirement[i])); - - for (CORBA::ULong i = 0; i < src.primaryArtifact.length (); ++i) - retval.add_primaryArtifact - (NIA_Handler::get_nia (src.primaryArtifact[i])); - - return retval; - } - - }; - - typedef Sequence_Handler < MonolithicImplementationDescription, - ::Deployment::MonolithicImplementationDescriptions, - ::Deployment::MonolithicImplementationDescription, - MID_Handler::get_mid > MID_Functor; - - } + struct IR_Handler + { + static void handle_ir (const ImplementationRequirement &desc, + ::Deployment::ImplementationRequirement &toconfig) + { + CIAO_TRACE ("IR_Handler::get_ir"); + + if (desc.resourceUsage_p ()) + { + 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.name (), + "Unknown ResourceUsageKind."); + break; + } + } + + if (desc.resourcePort_p ()) + toconfig.resourcePort = desc.resourcePort ().c_str (); + + if (desc.componentPort_p ()) + toconfig.componentPort = desc.componentPort ().c_str (); + + toconfig.resourceType = desc.resourceType ().c_str (); + toconfig.name = desc.name ().c_str (); + + std::for_each (desc.begin_property (), + desc.end_property (), + Property_Functor (toconfig.property )); + } + + static ImplementationRequirement + get_ir (const ::Deployment::ImplementationRequirement &src) + { + CIAO_TRACE ("IR_Handler::get_ir - reverse"); + + ImplementationRequirement retval (src.resourceType.in (), + src.name.in ()); + + if (src.resourceUsage.length () == 1) + switch (src.resourceUsage[0]) + { + case Deployment::None: + retval.resourceUsage (ResourceUsageKind::None); + break; + + case Deployment::InstanceUsesResource: + retval.resourceUsage (ResourceUsageKind::InstanceUsesResource); + break; + + case Deployment::ResourceUsesInstance: + retval.resourceUsage (ResourceUsageKind::ResourceUsesInstance); + break; + + case Deployment::PortUsesResource: + retval.resourceUsage (ResourceUsageKind::PortUsesResource); + break; + + case Deployment::ResourceUsesPort: + retval.resourceUsage (ResourceUsageKind::ResourceUsesPort); + break; + + default: + throw Config_Error (src.name.in (), + "Unknown ResourceUsageKind."); + break; + } + + retval.resourcePort (src.resourcePort.in ()); + + retval.componentPort (src.componentPort.in ()); + + for (CORBA::ULong i = 0; i < src.property.length (); ++i) + retval.add_property (Property_Handler::get_property (src.property[i])); + + return retval; + } + }; + + typedef Sequence_Handler < ImplementationRequirement, + ::Deployment::ImplementationRequirements, + ::Deployment::ImplementationRequirement, + IR_Handler::handle_ir > IR_Functor; + + struct MID_Handler + { + static void handle_mid (const MonolithicImplementationDescription &desc, + ::Deployment::MonolithicImplementationDescription &toconfig) + { + CIAO_TRACE ("MID_Handler::get_mid"); + + toconfig.nodeExecParameter.length (desc.count_nodeExecParameter ()); + std::for_each (desc.begin_nodeExecParameter (), + desc.end_nodeExecParameter (), + Property_Functor (toconfig.nodeExecParameter)); + + toconfig.componentExecParameter.length (desc.count_componentExecParameter ()); + std::for_each (desc.begin_componentExecParameter (), + desc.end_componentExecParameter (), + Property_Functor (toconfig.componentExecParameter)); + + toconfig.deployRequirement.length (desc.count_deployRequirement ()); + while (0) + { + IR_Handler::handle_ir (*desc.begin_deployRequirement (), + toconfig.deployRequirement[0]); + } + std::for_each (desc.begin_deployRequirement (), + desc.end_deployRequirement (), + IR_Functor (toconfig.deployRequirement)); + + toconfig.primaryArtifact.length (desc.count_primaryArtifact ()); + SEQ_HAND_GCC_BUG_WORKAROUND (NIA_Handler::handle_nia, + desc.begin_primaryArtifact (), + toconfig.primaryArtifact); + std::for_each (desc.begin_primaryArtifact (), + desc.end_primaryArtifact (), + NIA_Functor (toconfig.primaryArtifact)); + } + + static MonolithicImplementationDescription + get_mid (const ::Deployment::MonolithicImplementationDescription &src) + { + CIAO_TRACE ("MID_Handler::get_mid - reverse"); + + MonolithicImplementationDescription retval; + + for (CORBA::ULong i = 0; i < src.nodeExecParameter.length (); ++i) + retval.add_nodeExecParameter + (Property_Handler::get_property (src.nodeExecParameter[i])); + + for (CORBA::ULong i = 0; i < src.componentExecParameter.length (); ++i) + retval.add_componentExecParameter + (Property_Handler::get_property (src.componentExecParameter[i])); + + for (CORBA::ULong i = 0; i < src.deployRequirement.length (); ++i) + retval.add_deployRequirement + (IR_Handler::get_ir (src.deployRequirement[i])); + + for (CORBA::ULong i = 0; i < src.primaryArtifact.length (); ++i) + retval.add_primaryArtifact + (NIA_Handler::get_nia (src.primaryArtifact[i])); + + return retval; + } + + }; + + typedef Sequence_Handler < MonolithicImplementationDescription, + ::Deployment::MonolithicImplementationDescriptions, + ::Deployment::MonolithicImplementationDescription, + MID_Handler::handle_mid > MID_Functor; + + void CID_Handler::component_impl_descr ( @@ -279,8 +283,8 @@ namespace CIAO else if (cid->monolithicImpl_p ()) { toconfig.monolithicImpl.length (1); - MID_Handler::get_mid (cid->monolithicImpl (), - toconfig.monolithicImpl[0]); + MID_Handler::handle_mid (cid->monolithicImpl (), + toconfig.monolithicImpl[0]); } else throw Plan_Error ("ComponentImplementationDescription must have either assemblyImpl or monolithicImpl"); @@ -293,6 +297,9 @@ namespace CIAO // capability toconfig.capability.length (cid->count_capability ()); + SEQ_HAND_GCC_BUG_WORKAROUND (Capability_Handler::handle_capability, + cid->begin_capability (), + toconfig.capability); std::for_each (cid->begin_capability (), cid->end_capability (), Capability_Functor (toconfig.capability)); |