diff options
Diffstat (limited to 'CIAO/tools/Config_Handlers/PSPE_Handler.cpp')
-rw-r--r-- | CIAO/tools/Config_Handlers/PSPE_Handler.cpp | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/CIAO/tools/Config_Handlers/PSPE_Handler.cpp b/CIAO/tools/Config_Handlers/PSPE_Handler.cpp new file mode 100644 index 00000000000..0da66acefd4 --- /dev/null +++ b/CIAO/tools/Config_Handlers/PSPE_Handler.cpp @@ -0,0 +1,145 @@ +// $Id$ + +#include "PSPE_Handler.h" +#include "IDD_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "DAnCE/Deployment/Deployment_DataC.h" + +namespace CIAO +{ + namespace Config_Handlers + { + void + PSPE_Handler::sub_component_port_endpoints ( + const PlanConnectionDescription &src, + ::Deployment::PlanSubcomponentPortEndpoints &dest) + { + CIAO_TRACE("PSPE_Handler::sub_component_port_endpoints"); + + PlanConnectionDescription::internalEndpoint_const_iterator iei_e = + src.end_internalEndpoint (); + CORBA::ULong pos = 0; + dest.length (src.count_internalEndpoint ()); + + for (PlanConnectionDescription::internalEndpoint_const_iterator iei_b = + src.begin_internalEndpoint (); + iei_b != iei_e; + ++iei_b) + { + PSPE_Handler::sub_component_port_endpoint ((*iei_b), + dest[pos++]); + } + } + + void + PSPE_Handler::sub_component_port_endpoint ( + const PlanSubcomponentPortEndpoint &src, + ::Deployment::PlanSubcomponentPortEndpoint &dest) + { + CIAO_TRACE("PSPE_Handler::sub_component_port_endpoint"); + dest.portName = + src.portName ().c_str (); + + if (src.provider_p ()) + { + dest.provider = src.provider () == "true"; + } + else + { + dest.provider = false; + } + + CORBA::ULong tmp = 0; + + IDD_Handler::IDREF.find_ref (ACE_CString (src.instance ().id ().c_str ()), + tmp); + + dest.instanceRef = tmp; + + switch (src.kind ().integral ()) + { + case CCMComponentPortKind::Facet_l: + dest.kind = Deployment::Facet; + break; + + case CCMComponentPortKind::SimplexReceptacle_l: + dest.kind = Deployment::SimplexReceptacle; + break; + + case CCMComponentPortKind::MultiplexReceptacle_l: + dest.kind = Deployment::MultiplexReceptacle; + break; + + case CCMComponentPortKind::EventEmitter_l: + dest.kind = Deployment::EventEmitter; + break; + + case CCMComponentPortKind::EventPublisher_l: + dest.kind = Deployment::EventPublisher; + break; + + case CCMComponentPortKind::EventConsumer_l: + dest.kind = Deployment::EventConsumer; + break; + + default: + ACE_DEBUG ((LM_DEBUG, "Invalid port kind in connection\n")); + + } + } + + PlanSubcomponentPortEndpoint + PSPE_Handler::sub_component_port_endpoint ( + const Deployment::PlanSubcomponentPortEndpoint &src) + { // @@MAJO + CIAO_TRACE("PSPE_Handler::sub_component_port_endpoint - reverse"); + XMLSchema::string< char > pname ((src.portName)); + XMLSchema::string< char > tval ("true"); + XMLSchema::string< char > prov (""); + ACE_CString id; + IDD_Handler::IDREF.find_ref(src.instanceRef, id); + XMLSchema::IDREF < ACE_TCHAR > idref(id.c_str()); + + if (src.provider) + prov = tval; + + PlanSubcomponentPortEndpoint pspe (pname, + CCMComponentPortKind::Facet, + idref); + pspe.provider (prov); + + switch (src.kind) + { + case ::Deployment::Facet: + pspe.kind (CCMComponentPortKind::Facet); + break; + + case ::Deployment::SimplexReceptacle: + pspe.kind (CCMComponentPortKind::SimplexReceptacle); + break; + + case ::Deployment::MultiplexReceptacle: + pspe.kind (CCMComponentPortKind::MultiplexReceptacle); + break; + + case ::Deployment::EventEmitter: + pspe.kind (CCMComponentPortKind::EventEmitter); + break; + + case ::Deployment::EventPublisher: + pspe.kind (CCMComponentPortKind::EventPublisher); + break; + + case ::Deployment::EventConsumer: + pspe.kind (CCMComponentPortKind::EventConsumer); + break; + + default: + ACE_ERROR ((LM_ERROR, "Invalid port kind in PSPE\n")); + } + + + return pspe; + } + } +} |