summaryrefslogtreecommitdiff
path: root/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.cpp')
-rw-r--r--CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.cpp451
1 files changed, 0 insertions, 451 deletions
diff --git a/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.cpp b/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.cpp
deleted file mode 100644
index eb761275c6e..00000000000
--- a/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.cpp
+++ /dev/null
@@ -1,451 +0,0 @@
-/* -*- C++ -*- */
-
-//========================================================================
-/*
- * file Plan_Generator.cpp
- *
- * $Id$
- *
- * This file contains the implementation of the PackageConfiguration
- * Visitor class Plan_Generator which derives from PCVisitorBase. Each
- * Visit function focuses on the functionality necessary to process
- * the PackageConfiguration element which is passed to it as an argument
- * and on dispatching the next sequence of calls in the correct order!
- *
- * This implementation takes a PackageConfiguration and tries to grow
- * a DeploymentPlan out of it by expanding the latter in width and depth
- * simultaneously. At each level of the PackageConfiguration the
- * Plan_Generator first expands the DeploymentPlan vertically at the
- * corrsponding level and then dispatches the children of the current
- * PackageConfiguration element. This in turn might and most probably
- * will cause another vertical expansion of the DeploymentPlan, however
- * for a different element. This effect is produced due to the flattened
- * structure of the DeploymentPlan.
- *
- * author Stoyan Paunov <spaunov@isis.vanderbilt.edu
- */
-//========================================================================
-
-#include "PCVisitorBase.h"
-#include "PlanGenerator.h"
-
-#include "ace/OS_Memory.h" //for ACE_NEW* macros
-#include "ace/SString.h" //for ACE_CString
-
-#include "ciao/DeploymentC.h"
-#include "ciao/Deployment_DataC.h"
-#include "ciao/Packaging_DataC.h"
-
-#include "Config_Handlers/DnC_Dump.h"
-
-#include <iostream>
-using namespace std;
-
- //Constructor
- Plan_Generator::Plan_Generator (Deployment::DeploymentPlan &plan,
- Deployment::PackageConfiguration &pc)
- : PCVisitorBase (),
- plan_ (plan),
- pc_ (pc),
- last_cad_ (0)
- {
- }
-
- //entry point for the protected visitor to get it do start
- //the visitation process
- void Plan_Generator::Visit ()
- {
- Accept (*this, this->pc_);
- }
-
- // A whole slew of overloaded routines for different IDL
- // data types part of the PackageConfiguration.
-
-
- void Plan_Generator::Visit (Deployment::PackageConfiguration &pc)
- {
-
- //visit the ComponentPackageDescription
- if (pc.basePackage.length ())
- {
- //currently no support for that anywhere
- //for (size_t r = 0; r = pc.selectRequirement.length (); ++r);
-
- Accept (*this, pc.basePackage);
- }
- else
- ACE_DEBUG ((LM_WARNING,
- "[Plan_Generator - PackageConfiguration] We currently "
- "do NOT support package references, specializedConfigs",
- "or imports!\n"));
- }
-
- //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
-
- //ComponentPackageDescription descendents
-
- void Plan_Generator::Visit (Deployment::ComponentPackageDescription &cpd)
- {
- Accept (*this, cpd.realizes);
- //for (size_t impl = 0; impl < cpd.implementation.length (); ++impl)
- Accept (*this, cpd.implementation[0]);
- }
-
-
- void Plan_Generator::Visit (Deployment::ComponentInterfaceDescription &cid)
- {
- //Might want to populate this too once PICML starts supporting it
- }
-
-
- void Plan_Generator::Visit (Deployment::PackagedComponentImplementation &pci)
- {
- Accept (*this, pci.referencedImplementation);
-
- size_t plan_impl_len = plan_.implementation.length ();
- size_t plan_inst_len = plan_.instance.length ();
-
- //NOTE: order here matters. Need to populate the
- //MonolithicDeploymentDescription and the
- //InstanceDeploymentDescription first,
- //then call the update_configProperty
- if (plan_impl_len > 0 && plan_inst_len > 0)
- update_configProperty (pci,
- plan_.implementation[plan_impl_len - 1],
- plan_.instance[plan_inst_len - 1]);
- }
-
-
- void Plan_Generator::Visit (Deployment::ComponentImplementationDescription &cid)
- {
- if (cid.assemblyImpl.length ())
- Accept (*this, cid.assemblyImpl);
- else
- //;//Do nothing - monolithic component deployment not supported
- Accept (*this, cid.monolithicImpl);
- }
-
-
- void Plan_Generator::Visit (Deployment::ComponentAssemblyDescription &cad)
- {
- //NOTE: order matters for these calls. We need to populate
- //the instances before we try to polulate the connections
-
- //set the last ComponentAssemblyDescription
- this->last_cad_ = &cad;
-
- //visit the SubcomponentInstantiationDescription
- Accept (*this, cad.instance);
- //visit the connections
- Accept (*this, cad.connection);
-
- //reset the last ComponentAssemblyDescription
- this->last_cad_ = NULL;
- }
-
-
- void Plan_Generator::Visit (Deployment::SubcomponentInstantiationDescription &sid)
- {
- //visit the ComponentPackageDescription (again)
- if (sid.basePackage.length ())
- {
- size_t inst_len = plan_.instance.length ();
- plan_.instance.length (inst_len + 1);
-
- update_configProperty (sid, plan_.instance[inst_len]);
-
- plan_.instance[inst_len].name = sid.name;
- size_t impl_len = plan_.implementation.length ();
- plan_.implementation.length (impl_len + 1);
-
- ACE_CString mdname (plan_.instance[inst_len].name);
- mdname += "-mdd";
- plan_.implementation[impl_len].name = mdname.c_str ();
-
- plan_.instance[inst_len].implementationRef = impl_len;
-
- Accept (*this, sid.basePackage);
- }
- else
- ACE_DEBUG ((LM_WARNING,
- "[Plan_Generator - SubcomponentInstantiationDescription] ",
- "We currently do NOT support package references, ",
- "specializedConfigs or imports!\n"));
- }
-
-
- void Plan_Generator::Visit (Deployment::MonolithicImplementationDescription &mid)
- {
- //NOTE: There are usually 3 NamedImplementationArtifacts per
- //MonolithicImplementationDescription *_stub, *_svnt & *_exec
-
- //visit the NamedImplementationArtifacts
- Accept (*this, mid.primaryArtifact);
- }
-
-
- void Plan_Generator::Visit (Deployment::NamedImplementationArtifact &nia)
- {
- //increase the artifact length by one
- size_t arti_len = plan_.artifact.length ();
- plan_.artifact.length (arti_len + 1);
- plan_.artifact[arti_len].name = nia.name;
-
- //increase the artifactRef length by one and
- //update the reference
-
- //get the index of the last MonolithicDeploymentDescription
- size_t last_mdd = plan_.implementation.length () - 1;
- Deployment::MonolithicDeploymentDescription& mdd = plan_.implementation[last_mdd];
- size_t ref_len = mdd.artifactRef.length ();
- mdd.artifactRef.length (ref_len + 1);
- mdd.artifactRef[ref_len] = arti_len;
-
- //visit the actual ImplementationArtifactDescriptor
- Accept (*this, nia.referencedArtifact);
- }
-
-
- void Plan_Generator::Visit (Deployment::ImplementationArtifactDescription &iad)
- {
-
- size_t last_arti = plan_.artifact.length ();
- size_t plan_loc_len = plan_.artifact[last_arti - 1].location.length ();
- size_t num_loc = iad.location.length ();
- for (size_t i = 0; i < num_loc; ++i)
- {
- Deployment::ArtifactDeploymentDescription& add = plan_.artifact[last_arti - 1];
- add.location.length (plan_loc_len + 1);
- add.location[plan_loc_len] = iad.location[i];
- ++plan_loc_len;
-
- //update execParameter
- update_execParameter (iad, add);
- }
- }
-
- //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
-
- //ComponentPackageReference descendents
-
- void Plan_Generator::Visit (Deployment::ComponentPackageReference &cpr)
- {
- //not implemented
- }
-
- //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
-
- //properties
-
- void Plan_Generator::Visit (Deployment::AssemblyPropertyMapping &apm)
- {
-
- }
-
-
- void Plan_Generator::Visit (Deployment::Property &property)
- {
-
- }
-
-
- //requirements & capabilities
-
- void Plan_Generator::Visit (Deployment::Requirement &requirement)
- {
-
- }
-
-
- void Plan_Generator::Visit (Deployment::Capability &capability)
- {
-
- }
-
-
- void Plan_Generator::Visit (Deployment::ImplementationRequirement &ir)
- {
-
- }
-
-
- void Plan_Generator::Visit (Deployment::ImplementationDependency &id)
- {
-
- }
-
- //ports and connections
-
- void Plan_Generator::Visit (Deployment::AssemblyConnectionDescription &acd)
- {
- if (!this->last_cad_)
- return;
-
- Deployment::ComponentAssemblyDescription& cad = *(this->last_cad_);
-
- size_t plan_conn_len = plan_.connection.length ();
- plan_.connection.length (plan_conn_len + 1);
- plan_.connection[plan_conn_len].name = acd.name;
-
- size_t iep_len = acd.internalEndpoint.length ();
- size_t plan_iep_len =
- plan_.connection[plan_conn_len].internalEndpoint.length ();
-
- //cout << "==> " << acd.name << " has " << iep_len << " and "
- // << acd.externalEndpoint.length () << endl << endl ;
-
- plan_.connection[plan_conn_len].internalEndpoint.length (plan_iep_len + iep_len);
-
- for (size_t i = 0; i < iep_len; ++i)
- {
- plan_.connection[plan_conn_len]
- .internalEndpoint[plan_iep_len + i].portName =
- acd.internalEndpoint[i].portName;
-
- size_t inst_ref = acd.internalEndpoint[i].instanceRef;
- const char* inst_name = cad.instance[inst_ref].name;
- size_t plan_inst_len = plan_.instance.length ();
-
- for (size_t j = 0; j < plan_inst_len; ++j)
- {
- const char* plan_inst_name = plan_.instance[j].name;
- if (ACE_OS::strcmp (plan_inst_name, inst_name) == 0)
- {
- plan_.connection[plan_conn_len]
- .internalEndpoint[plan_iep_len + i].instanceRef = j;
- break;
- }
- }
-
- //Now traverse the interface
-
- //NOTE: move these up and refactor!
- Deployment::SubcomponentInstantiationDescription& scid =
- cad.instance[inst_ref];
- Deployment::PlanSubcomponentPortEndpoint& pspe =
- plan_.connection[plan_conn_len]
- .internalEndpoint[plan_iep_len + i];
-
- size_t pkg_len = scid.basePackage.length ();
- for (size_t k = 0; k < pkg_len; ++k)
- {
- Deployment::ComponentPackageDescription& package = scid.basePackage[k];
-
- //empty unfortunately
- Deployment::ComponentInterfaceDescription cid = package.realizes;
- //cid = package.implementation[0].referencedImplementation.implements;
-
- size_t port_len = cid.port.length ();
- for (size_t p = 0; p < port_len; ++p)
- {
- const char* cid_pname = cid.port[p].name;
- const char* pspe_pname = pspe.portName;
- //cout << "CMP: " << pspe_pname << " <=> " << cid_pname << endl;
- if (ACE_OS::strcmp (cid_pname, pspe_pname) == 0)
- {
- pspe.kind = cid.port[p].kind;
-
- //cout << "-->" << pspe_pname << " Port kind is "
- // << pspe.kind << endl;
-
- goto interface_end;
- break; // ???
- }
- }
- }
-
-interface_end:
- //cout << endl;
- ;
-
- }
-
- }
-
-
- void Plan_Generator::Visit (Deployment::SubcomponentPortEndpoint &spe)
- {
-
- }
-
-
- void Plan_Generator::Visit (Deployment::ComponentExternalPortEndpoint &cepe)
- {
-
- }
-
-//several helper functions
-
- void Plan_Generator::
- update_execParameter (Deployment::ImplementationArtifactDescription& iad,
- Deployment::ArtifactDeploymentDescription& add)
- {
- //update execParameters
- size_t num_execP = iad.execParameter.length ();
- for (size_t j = 0; j < num_execP; ++j)
- {
- size_t execP_len = add.execParameter.length ();
- add.execParameter.length (execP_len + 1);
- add.execParameter[execP_len] = iad.execParameter[j];
- ++execP_len;
- }
- }
-
- void Plan_Generator::
- update_configProperty (Deployment::SubcomponentInstantiationDescription &scid,
- Deployment::InstanceDeploymentDescription &idd)
- {
- size_t scid_plen =
- scid.configProperty.length ();
-
- size_t idd_plen = idd.configProperty.length ();
- idd.configProperty.length (idd_plen + scid_plen);
-
- for (size_t i = 0; i < scid_plen; ++i)
- idd.configProperty[idd_plen + i] =
- scid.configProperty[i];
-
- }
-
- void Plan_Generator::
- update_configProperty (Deployment::PackagedComponentImplementation& pcid,
- Deployment::MonolithicDeploymentDescription& mid,
- Deployment::InstanceDeploymentDescription& idd)
- {
- bool update;
- size_t pcid_plen = pcid.referencedImplementation
- .configProperty.length ();
-
- size_t mid_eplen = mid.execParameter.length ();
- mid.execParameter.length (mid_eplen + pcid_plen);
-
- for (size_t i = 0; i < pcid_plen; ++i)
- {
- update = true;
- mid.execParameter[mid_eplen + i] = pcid.referencedImplementation
- .configProperty[i];
-
- const char* pname = pcid.referencedImplementation
- .configProperty[i].name;
-
- size_t idd_plen = idd.configProperty.length ();
-
- for (size_t j = 0; j < idd_plen; ++j)
- {
- const char* idd_pname = idd.configProperty[j].name;
- if (ACE_OS::strcmp (idd_pname, pname) == 0)
- {
- update = false;
- break;
- }
- }
-
- if (update)
- {
- idd.configProperty.length (idd_plen + 1);
- idd.configProperty[idd_plen] =
- pcid.referencedImplementation.configProperty[i];
- }
- }
- }
-