diff options
Diffstat (limited to 'CIAO/tools/Config_Handlers/CCD_Handler.cpp')
-rw-r--r-- | CIAO/tools/Config_Handlers/CCD_Handler.cpp | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/CIAO/tools/Config_Handlers/CCD_Handler.cpp b/CIAO/tools/Config_Handlers/CCD_Handler.cpp new file mode 100644 index 00000000000..8256f089f68 --- /dev/null +++ b/CIAO/tools/Config_Handlers/CCD_Handler.cpp @@ -0,0 +1,186 @@ +// $Id$ + +#include "tao/AnyTypeCode/AnyTypeCode_methods.h" + +#include "ciao/CIAO_common.h" +#include "CCD_Handler.h" +#include "ccd.hpp" +#include "Property_Handler.h" +#include "CPD_Handler.h" +#include "ComponentPropertyDescription_Handler.h" +#include "DAnCE/Deployment/Deployment_DataC.h" + +namespace CIAO +{ + namespace Config_Handlers + { + void + CCD_Handler::component_interface_descr ( + const ComponentInterfaceDescription &desc, + Deployment::ComponentInterfaceDescription& toconfig) + { + CIAO_TRACE("CCD_Handler::component_interface_descr"); + if (desc.UUID_p ()) + toconfig.UUID = + CORBA::string_dup (desc.UUID ().c_str ()); + + if (desc.label_p ()) + { + toconfig.label = + CORBA::string_dup (desc.label ().c_str ()); + } + + if (desc.specificType_p ()) + { + toconfig.specificType = + CORBA::string_dup (desc.specificType ().c_str ()); + } + + ComponentInterfaceDescription::supportedType_const_iterator + end = desc.end_supportedType (); + + CORBA::ULong pos = 0; + toconfig.supportedType.length (desc.count_supportedType ()); + for (ComponentInterfaceDescription::supportedType_const_iterator s = + desc.begin_supportedType (); + s != end; + ++s) + { + toconfig.supportedType[pos++] = s->c_str (); + } + + ComponentInterfaceDescription::idlFile_const_iterator + eidl = desc.end_idlFile (); + pos = 0; + toconfig.idlFile.length (desc.count_idlFile ()); + for (ComponentInterfaceDescription::idlFile_const_iterator sidl= + desc.begin_idlFile (); + sidl != eidl; + ++sidl) + { + toconfig.idlFile [pos++] = sidl->c_str (); + } + + ComponentInterfaceDescription::configProperty_const_iterator pend = + desc.end_configProperty (); + pos = 0; + toconfig.configProperty.length (desc.count_configProperty ()); + for (ComponentInterfaceDescription::configProperty_const_iterator pstart = + desc.begin_configProperty (); + pstart != pend; + ++pstart) + { + Property_Handler::handle_property (*pstart, + toconfig.configProperty [pos++]); + } + + pos = 0; + toconfig.port.length (desc.count_port ()); + for (ComponentInterfaceDescription::port_const_iterator + port (desc.begin_port ()); + port != desc.end_port (); + ++port) + { + CPD_Handler::handle_component_port_description (*port, + toconfig.port[pos++]); + } + + pos = 0; + CORBA::ULong len = desc.count_property (); + toconfig.property.length ( len ); + for(ComponentInterfaceDescription::property_const_iterator + prop (desc.begin_property()); + prop != desc.end_property(); + prop++) + { + ComponentPropertyDescription_Handler::component_property_description (*prop, + toconfig.property[pos++]); + } + + pos = 0; + toconfig.infoProperty.length (desc.count_infoProperty ()); + for ( ComponentInterfaceDescription::infoProperty_const_iterator + infoProp (desc.begin_infoProperty()); + infoProp != desc.end_infoProperty(); + infoProp++) + { + Property_Handler::handle_property (*infoProp, + toconfig.infoProperty[pos]); + } + } + + ComponentInterfaceDescription + CCD_Handler::component_interface_descr ( + const ::Deployment::ComponentInterfaceDescription& src) + { + CIAO_TRACE("CCD_Handler::component_interface_descr - reverse"); + ComponentInterfaceDescription cid; + + //Load up the basic string members + XMLSchema::string< char > uuid ((src.UUID)); + XMLSchema::string< char > label ((src.label)); + XMLSchema::string< char > specifict ((src.specificType)); + + //Then put them in the CID + cid.UUID (uuid); + cid.label (label); + cid.specificType (specifict); + + //Get the supported type(s) and load them into cid + ::CORBA::ULong total = src.supportedType.length (); + for (size_t i = 0; i < total; ++i) + { + XMLSchema::string< char > curr ((src.supportedType[i])); + cid.add_supportedType (curr); + } + + //Get the idlFile(s) and store them into the cid + total = src.idlFile.length (); + for (size_t j = 0; j < total; ++j) + { + XMLSchema::string< char > curr ((src.idlFile[j])); + cid.add_idlFile (curr); + } + + //Get the configProperty(ies) and store them into the cid + total = src.configProperty.length (); + for (size_t k = 0; k < total; ++k) + { + cid.add_configProperty ( + Property_Handler::get_property (src.configProperty[k])); + } + + //Same drill for the component port description(s) + total = src.port.length (); + for (size_t l = 0; l < total; ++l) + { + cid.add_port ( + CPD_Handler::component_port_description (src.port[l])); + } + + + //Load up the property field + total = src.property.length(); + for(size_t m = 0; + m < total; + m++) + { + cid.add_property( + ComponentPropertyDescription_Handler::component_property_description ( + src.property[m])); + } + + //Load up the infoProperty(s) + total = src.infoProperty.length(); + for(size_t n = 0; + n < total; + n++) + { + cid.add_infoProperty( + Property_Handler::get_property (src.infoProperty[n])); + } + + return cid; + } + } +} |