summaryrefslogtreecommitdiff
path: root/TAO/CIAO/DAnCE/RepositoryManager/Update_Plan.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/CIAO/DAnCE/RepositoryManager/Update_Plan.cpp')
-rw-r--r--TAO/CIAO/DAnCE/RepositoryManager/Update_Plan.cpp462
1 files changed, 0 insertions, 462 deletions
diff --git a/TAO/CIAO/DAnCE/RepositoryManager/Update_Plan.cpp b/TAO/CIAO/DAnCE/RepositoryManager/Update_Plan.cpp
deleted file mode 100644
index 9f7b77a7799..00000000000
--- a/TAO/CIAO/DAnCE/RepositoryManager/Update_Plan.cpp
+++ /dev/null
@@ -1,462 +0,0 @@
-// $Id$
-
-#include "RepositoryManager_Impl.h"
-#include "Update_Plan.h"
-#include "DeploymentC.h"
-#include "ace/Hash_Map_Manager.h"
-#include "ace/OS_NS_stdio.h"
-#include "ace/streams.h"
-
-ACE_RCSID (DAnCE,
- RepositoryManager,
- "$Id$")
-
-using namespace Deployment;
-
-namespace CIAO
-{
- void
- traverse_package (PackageConfiguration* &pc,
- DeploymentPlan &plan,
- REF_MAP &ref_map,
- REF_MAP &primary_ref_map)
- {
- // traverse the package configuration structure to get to the
- // BasePackage which consists of assemblies.
- //
- REF_MAP plan_ref_map;
- CORBA::ULong bp_len =
- pc->basePackage.length ();
-
- for (CORBA::ULong x = 0; x != bp_len; ++x)
- {
- CORBA::ULong impl_len =
- pc->basePackage[x].implementation.length ();
-
- for (CORBA::ULong y = 0;
- y != impl_len;
- ++y)
- {
- // traverse the .cpd file and get to the referenced .cid file
- //
- ComponentImplementationDescription cid =
- pc->basePackage[x].implementation[y].referencedImplementation;
- CORBA::ULong assembly_len = cid.assemblyImpl.length ();
-
- for (CORBA::ULong z = 0;
- z != assembly_len;
- ++z)
- {
- // traverse the .cid file and get to each
- // of the "assemblyImpl" tags.
- //
- ComponentAssemblyDescription assembly =
- cid.assemblyImpl[z];
- //
- // traverse the individual assembly.
- //
- traverse_assembly (assembly, plan, ref_map, primary_ref_map,
- plan_ref_map);
- }
- }
- }
- }
-
- void
- traverse_assembly (ComponentAssemblyDescription &assembly,
- DeploymentPlan &plan,
- REF_MAP &ref_map, REF_MAP &primary_ref_map,
- REF_MAP &plan_ref_map)
- {
- // traverse the assembly (ComponentAssemblyDescription) and
- // processes the instances and the connection within the assembly.
- //
- CORBA::ULong ins_len = assembly.instance.length ();
- for (CORBA::ULong k = 0; k < ins_len; ++k)
- {
- SubcomponentInstantiationDescription ins =
- assembly.instance[k];
- const char* in_name = ins.name;
-
- CORBA::ULong plan_ins_len =
- plan.instance.length ();
-
- for (CORBA::ULong l = 0; l < plan_ins_len; ++l)
- {
- const char* plan_name = plan.instance[l].name;
- if (ACE_OS::strcmp (plan_name, in_name) == 0)
- {
- traverse_assembly_instance (ins, plan, l,
- ref_map, primary_ref_map,
- plan_ref_map);
- }
- }
- }
-
- CORBA::ULong assembly_conn_len =
- assembly.connection.length ();
-
- for (CORBA::ULong m = 0; m < assembly_conn_len; ++m)
- {
- AssemblyConnectionDescription
- assembly_connection = assembly.connection[m];
- traverse_assembly_connection (assembly,
- assembly_connection,
- plan);
- }
- }
-
- void
- traverse_assembly_connection (ComponentAssemblyDescription
- &assembly,
- AssemblyConnectionDescription
- &assembly_connection,
- DeploymentPlan &plan)
- {
- // traverse the assembly connection and get information about the
- // portName and the instances at each end of the connection.
- // Also traverse the InterfaceDescriptions for each of those instances
- // and populate the portKind information.
- //
- CORBA::ULong con_length (plan.connection.length ());
- plan.connection.length (con_length + 1);
- CORBA::ULong iepe_len = assembly_connection.internalEndpoint.length ();
- for (CORBA::ULong n = 0; n < iepe_len; ++n)
- {
- CORBA::ULong iep_len (plan.connection[con_length].
- internalEndpoint.length ());
- plan.connection[con_length].internalEndpoint
- .length (iep_len + 1);
- plan.connection[con_length].internalEndpoint
- [iep_len].portName = assembly_connection.
- internalEndpoint[n].portName;
- CORBA::ULong ins_ref = assembly_connection.internalEndpoint[n].
- instanceRef;
- const char* ins_name = assembly.instance[ins_ref].name;
- CORBA::ULong plan_ins_len = plan.instance.length ();
- for (CORBA::ULong w = 0; w < plan_ins_len; ++w)
- {
- const char* pl_name = plan.instance[w].name;
- if (ACE_OS::strcmp (pl_name, ins_name) == 0)
- {
- plan.connection[con_length].internalEndpoint
- [iep_len].instanceRef = w;
- break;
- }
- }
- traverse_interface (assembly.instance[ins_ref],
- plan.connection[con_length].
- internalEndpoint[iep_len]);
- }
- }
-
- void
- traverse_interface (SubcomponentInstantiationDescription
- &instance,
- PlanSubcomponentPortEndpoint
- &pspe)
- {
- // traverse the InterfaceDescription of the instance and get information
- // about the portkind of the port.
- //
- CORBA::ULong pack_len = instance.package.length ();
- for (CORBA::ULong m = 0; m < pack_len; ++m)
- {
- ComponentPackageDescription
- package = instance.package[m];
-
- ComponentInterfaceDescription
- cid = package.realizes;
-
- CORBA::ULong port_len = cid.port.length ();
-
- for (CORBA::ULong n = 0; n < port_len; ++n)
- {
- const char* main_port_name = cid.port[n].name;
- const char* port_name = pspe.portName;
- if (ACE_OS::strcmp (main_port_name, port_name) == 0)
- {
- pspe.kind = cid.port[n].kind;
- }
- }
- }
- }
-
- void
- traverse_assembly_instance (
- SubcomponentInstantiationDescription
- &instance,
- DeploymentPlan &plan, int l,
- REF_MAP &ref_map, REF_MAP &primary_ref_map,
- REF_MAP &plan_ref_map)
- {
- // Each instance has a package.
- // Each package has an implementation and their correspoding artifacts.
- // Traverse this information and populate the artifact and the
- // implementation information within the DeploymentPlan.
- //
- ART_REF_MAP art_ref_map;
-
- update_config_property (instance, plan.instance[l]);
-
- CORBA::ULong pack_len = instance.package.length ();
- for (CORBA::ULong m = 0; m < pack_len; ++m)
- {
- ComponentPackageDescription
- package = instance.package[m];
- CORBA::ULong pack_impl_len = package.implementation.length ();
-
- for (CORBA::ULong n = 0; n < pack_impl_len; ++n)
- {
- PackagedComponentImplementation
- impl = package.implementation[n];
- CORBA::ULong impl_length (plan.implementation.length ());
- plan.implementation.length (impl_length + 1);
- plan.implementation[impl_length].name = plan.instance[l].name;
- plan.instance[l].implementationRef = impl_length;
- CORBA::ULong mono_impl_len =
- impl.referencedImplementation.monolithicImpl.length ();
-
- for (CORBA::ULong p = 0; p < mono_impl_len; ++p)
- {
- MonolithicImplementationDescription
- mid = impl.referencedImplementation.monolithicImpl[p];
-
- update_artifacts (mid, plan, plan.instance[l],
- ref_map, primary_ref_map, art_ref_map,
- plan_ref_map,
- plan.implementation[impl_length]);
- }
- update_impl_config_property (impl, plan.implementation[impl_length],
- plan.instance[l]);
- }
- }
- }
-
- void
- update_artifacts (MonolithicImplementationDescription &mid,
- DeploymentPlan &plan,
- InstanceDeploymentDescription &instance,
- REF_MAP &ref_map, REF_MAP &primary_ref_map,
- ART_REF_MAP &art_ref_map,
- REF_MAP &plan_ref_map,
- MonolithicDeploymentDescription &mdd)
- {
- ref_map.unbind_all ();
- primary_ref_map.unbind_all ();
- art_ref_map.unbind_all ();
- CORBA::ULong prim_art_len = mid.primaryArtifact.length ();
- for (CORBA::ULong q = 0; q < prim_art_len; ++q)
- {
- ImplementationArtifactDescription
- pack_iad = mid.primaryArtifact[q].referencedArtifact;
- ACE_TString artifact_name = (const char*)mid.primaryArtifact[q].name;
- int arti_len;
- int plan_arti_len;
- CORBA::ULong art_length (plan.artifact.length ());
-
- if (ref_map.find (artifact_name, arti_len) != 0)
- {
- if (plan_ref_map.find (artifact_name, plan_arti_len) != 0)
- {
- plan.artifact.length (art_length + 1);
- plan.artifact[art_length].name = mid.primaryArtifact[q].name;
- plan.artifact[art_length].node = instance.node;
- ref_map.bind (artifact_name, art_length);
- plan_ref_map.bind (artifact_name, art_length);
- primary_ref_map.bind (artifact_name, art_length);
- CORBA::ULong art_ref_len (mdd.artifactRef.length ());
- mdd.artifactRef.length (art_ref_len + 1);
- mdd.artifactRef[art_ref_len] = art_length;
- update_artifact_location (pack_iad,
- plan.artifact[art_length]);
- update_artifact_property (pack_iad,
- plan.artifact[art_length]);
- }
- else
- {
- art_length = plan_arti_len;
- ref_map.bind (artifact_name, art_length);
- primary_ref_map.bind (artifact_name, art_length);
- CORBA::ULong art_ref_len (mdd.artifactRef.length ());
- mdd.artifactRef.length (art_ref_len + 1);
- mdd.artifactRef[art_ref_len] = art_length;
- update_artifact_location (pack_iad,
- plan.artifact[art_length]);
- update_artifact_property (pack_iad,
- plan.artifact[art_length]);
- }
- }
- update_common_artifact_and_art_ref (pack_iad,
- primary_ref_map, ref_map,
- art_ref_map, plan_ref_map, mdd,
- plan, instance);
- }
- }
-
- void
- update_common_artifact_and_art_ref (
- ImplementationArtifactDescription
- &pack_iad,
- REF_MAP &primary_ref_map,
- REF_MAP &ref_map,
- ART_REF_MAP &art_ref_map,
- REF_MAP &plan_ref_map,
- MonolithicDeploymentDescription &mid,
- DeploymentPlan &plan,
- InstanceDeploymentDescription
- &instance)
- {
- int plan_arti_len;
- int arti_len;
- CORBA::ULong new_art_length;
- CORBA::ULong deps_len = pack_iad.dependsOn.length ();
- for (CORBA::ULong g = 0; g < deps_len; ++g)
- {
- ACE_TString dep_name =
- (const char*)pack_iad.dependsOn[g].name;
-
- if (ref_map.find (dep_name, arti_len) == 0)
- {
- if (primary_ref_map.find (dep_name, arti_len) != 0)
- {
- if (art_ref_map.find (arti_len, arti_len) != 0)
- {
- update_impl_art_ref (mid, arti_len);
- art_ref_map.bind (arti_len, arti_len);
- }
- }
- }
- else
- {
- ImplementationArtifactDescription
- depends_iad = pack_iad.dependsOn[g].
- referencedArtifact;
- if (plan_ref_map.find (dep_name, plan_arti_len) != 0)
- {
- new_art_length = plan.artifact.length ();
- plan.artifact.length (new_art_length + 1);
- plan.artifact[new_art_length].name =
- pack_iad.dependsOn[g].name;
- plan.artifact[new_art_length].node = instance.node;
- update_artifact_location (depends_iad,
- plan.artifact
- [new_art_length]);
- ref_map.bind (
- (const char*)plan.artifact[new_art_length].name,
- new_art_length);
- plan_ref_map.bind (
- (const char*)plan.artifact[new_art_length].name,
- new_art_length);
- update_impl_art_ref (mid, new_art_length);
- art_ref_map.bind (new_art_length, new_art_length);
- }
- else
- {
- new_art_length = plan_arti_len;
- ref_map.bind (
- (const char*)plan.artifact[new_art_length].name,
- new_art_length);
- update_impl_art_ref (mid, new_art_length);
- art_ref_map.bind (new_art_length, new_art_length);
- }
- }
- }
- }
-
- void
- update_config_property (SubcomponentInstantiationDescription &sub_instance,
- InstanceDeploymentDescription &instance)
- {
- CORBA::ULong pro_len =
- sub_instance.configProperty.length ();
-
- for (CORBA::ULong x = 0; x < pro_len; ++x)
- {
- CORBA::ULong ins_pro_len (instance.configProperty. length ());
- instance.configProperty.length (ins_pro_len + 1);
- instance.configProperty[ins_pro_len]
- = sub_instance.configProperty[x];
- }
- }
-
- void
- update_impl_config_property (PackagedComponentImplementation
- &impl,
- MonolithicDeploymentDescription
- &mid,
-
- InstanceDeploymentDescription
- &instance)
- {
- int update_flag;
- CORBA::ULong pro_len =
- impl.referencedImplementation.configProperty.length ();
-
- for (CORBA::ULong x = 0; x < pro_len; ++x)
- {
- update_flag = 1;
- CORBA::ULong impl_pro_len (mid.execParameter.length ());
- mid.execParameter.length (impl_pro_len + 1);
- mid.execParameter[impl_pro_len]
- = impl.referencedImplementation.configProperty[x];
- const char* property_name =
- impl.referencedImplementation.configProperty[x].name;
- CORBA::ULong ins_pro_len (instance.configProperty. length ());
- for (CORBA::ULong y = 0; y < ins_pro_len; ++y)
- {
- const char* ins_pro_name = instance.configProperty[y].name;
- if (ACE_OS::strcmp (ins_pro_name, property_name) == 0)
- {
- update_flag = 0;
- break;
- }
- }
- if (update_flag == 1)
- {
- instance.configProperty.length (ins_pro_len + 1);
- instance.configProperty[ins_pro_len]
- = impl.referencedImplementation.configProperty[x];
- }
- }
- }
-
- void
- update_impl_art_ref (MonolithicDeploymentDescription &mid,
- int arti_len)
- {
- CORBA::ULong new_art_ref_len (mid.artifactRef.length ());
- mid.artifactRef.length (new_art_ref_len + 1);
- mid.artifactRef[new_art_ref_len] = arti_len;
- }
-
- void
- update_artifact_location (ImplementationArtifactDescription
- &pack_iad,
- ArtifactDeploymentDescription
- &plan_artifact)
- {
- CORBA::ULong loc_len = pack_iad.location.length ();
- for (CORBA::ULong e = 0; e < loc_len; ++e)
- {
- CORBA::ULong art_loc_len (plan_artifact.location.length ());
- plan_artifact.location.length (art_loc_len + 1);
- plan_artifact.location[art_loc_len] = pack_iad.location[e];
- }
- }
-
- void
- update_artifact_property (ImplementationArtifactDescription
- &pack_iad,
- ArtifactDeploymentDescription
- &plan_artifact)
- {
- CORBA::ULong para_len = pack_iad.execParameter.length ();
- for (CORBA::ULong f = 0; f < para_len; ++f)
- {
- CORBA::ULong art_pro_len (plan_artifact.execParameter.length ());
- plan_artifact.execParameter.length (art_pro_len + 1);
- plan_artifact.execParameter[art_pro_len] = pack_iad.execParameter[f];
- }
- }
-}