summaryrefslogtreecommitdiff
path: root/CIAO/tools/Config_Handlers/PSPE_Handler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'CIAO/tools/Config_Handlers/PSPE_Handler.cpp')
-rw-r--r--CIAO/tools/Config_Handlers/PSPE_Handler.cpp145
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;
+ }
+ }
+}