diff options
author | jai <jai@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-11-03 18:39:34 +0000 |
---|---|---|
committer | jai <jai@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-11-03 18:39:34 +0000 |
commit | 399fad20aa0be697a64e3243950e57f3f5e287ae (patch) | |
tree | 07b3163b0e2e45687fd0f9f7c455a57406854208 | |
parent | bccf6b1f01b74882529d01b306aa5ef0cb6c9021 (diff) | |
download | ATCD-399fad20aa0be697a64e3243950e57f3f5e287ae.tar.gz |
Wed Nov 3 12:38:21 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
-rw-r--r-- | TAO/CIAO/ChangeLog | 14 | ||||
-rw-r--r-- | TAO/CIAO/DAnCE/RepositoryManager/Update_Plan.cpp | 114 | ||||
-rw-r--r-- | TAO/CIAO/DAnCE/RepositoryManager/Update_Plan.h | 8 |
3 files changed, 96 insertions, 40 deletions
diff --git a/TAO/CIAO/ChangeLog b/TAO/CIAO/ChangeLog index 47bb2c6a2ce..5a81b0f378e 100644 --- a/TAO/CIAO/ChangeLog +++ b/TAO/CIAO/ChangeLog @@ -1,8 +1,16 @@ +Wed Nov 3 12:38:21 2004 Jaiganesh B <jai@dre.vanderbilt.edu> + + * DAnCE/RepositoryManager/Update_Plan.cpp: + * DAnCE/RepositoryManager/Update_Plan.h: + + Made changes to handle multiple component instances + deployment. + Tue Nov 2 17:26:42 2004 Jeff Parsons <j.parsons@vanderbilt.edu> * CIDLC/ServantHeaderGenerator.cpp: * CIDLC/ServantSourceGenerator.cpp: - + Fixed the emitters for supported operations to include abstract interfaces in their traversals. @@ -10,13 +18,13 @@ Tue Nov 2 09:59:15 2004 Jeff Parsons <j.parsons@vanderbilt.edu> * CIDLC/ServantGenerator.cpp: * CIDLC/ServantHeaderGenerator.cpp: - + Fixed some regular expressions, used to generate the servant header file ifdef guard and export macros, to recognize the file extension .cdl in addition to the existing patterns for .cidl and .idl. These particular regular expressions were overlooked in the checkin of - + Thu Sep 30 11:03:20 2004 Jeff Parsons <j.parsons@vanderbilt.edu> Tue Nov 2 04:45:44 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu> diff --git a/TAO/CIAO/DAnCE/RepositoryManager/Update_Plan.cpp b/TAO/CIAO/DAnCE/RepositoryManager/Update_Plan.cpp index f8f16019b95..251252b12b9 100644 --- a/TAO/CIAO/DAnCE/RepositoryManager/Update_Plan.cpp +++ b/TAO/CIAO/DAnCE/RepositoryManager/Update_Plan.cpp @@ -24,6 +24,7 @@ namespace CIAO // 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 (); @@ -54,7 +55,8 @@ namespace CIAO // // traverse the individual assembly. // - traverse_assembly (assembly, plan, ref_map, primary_ref_map); + traverse_assembly (assembly, plan, ref_map, primary_ref_map, + plan_ref_map); } } } @@ -63,7 +65,8 @@ namespace CIAO void traverse_assembly (ComponentAssemblyDescription &assembly, DeploymentPlan &plan, - REF_MAP &ref_map, REF_MAP &primary_ref_map) + 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. @@ -84,7 +87,8 @@ namespace CIAO if (strcmp (plan_name, in_name) == 0) { traverse_assembly_instance (ins, plan, l, - ref_map, primary_ref_map); + ref_map, primary_ref_map, + plan_ref_map); } } } @@ -183,7 +187,8 @@ namespace CIAO SubcomponentInstantiationDescription &instance, DeploymentPlan &plan, int l, - REF_MAP &ref_map, REF_MAP &primary_ref_map) + 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. @@ -217,7 +222,8 @@ namespace CIAO mid = impl.referencedImplementation.monolithicImpl[p]; update_artifacts (mid, plan, plan.instance[l], - ref_map, primary_ref_map, art_ref_map, + ref_map, primary_ref_map, art_ref_map, + plan_ref_map, plan.implementation[impl_length]); } update_impl_config_property (impl, plan.implementation[impl_length], @@ -232,8 +238,12 @@ namespace CIAO 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) { @@ -241,26 +251,44 @@ namespace CIAO 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) { - 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); - 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]); + 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, mdd, + art_ref_map, plan_ref_map, mdd, plan, instance); } } @@ -272,13 +300,14 @@ namespace CIAO 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) + InstanceDeploymentDescription + &instance) { + 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) { @@ -302,19 +331,34 @@ namespace CIAO ImplementationArtifactDescription depends_iad = pack_iad.dependsOn[g]. referencedArtifact; - CORBA::ULong 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); - update_impl_art_ref (mid, new_art_length); - art_ref_map.bind (new_art_length, new_art_length); + if (plan_ref_map.find (dep_name, 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 = 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); + } } } } diff --git a/TAO/CIAO/DAnCE/RepositoryManager/Update_Plan.h b/TAO/CIAO/DAnCE/RepositoryManager/Update_Plan.h index 3a67955bd2f..347330e09fe 100644 --- a/TAO/CIAO/DAnCE/RepositoryManager/Update_Plan.h +++ b/TAO/CIAO/DAnCE/RepositoryManager/Update_Plan.h @@ -46,11 +46,13 @@ namespace CIAO Deployment::DeploymentPlan &plan, int l, REF_MAP &ref_map, - REF_MAP &primary_ref_map); + REF_MAP &primary_ref_map, + REF_MAP &plan_ref_map); void traverse_assembly (Deployment::ComponentAssemblyDescription &assembly, Deployment::DeploymentPlan &plan, - REF_MAP &ref_map, REF_MAP &primary_ref_map); + REF_MAP &ref_map, REF_MAP &primary_ref_map, + REF_MAP &plan_ref_map); void traverse_interface (Deployment::SubcomponentInstantiationDescription &instance, @@ -72,6 +74,7 @@ namespace CIAO Deployment::InstanceDeploymentDescription &instance, REF_MAP &ref_map, REF_MAP &primary_ref_map, ART_REF_MAP &art_ref_map, + REF_MAP &plan_ref_map, Deployment::MonolithicDeploymentDescription &mdd); void update_artifact_location (Deployment::ImplementationArtifactDescription @@ -100,6 +103,7 @@ namespace CIAO REF_MAP &primary_ref_map, REF_MAP &ref_map, ART_REF_MAP &art_ref_map, + REF_MAP &plan_ref_map, Deployment::MonolithicDeploymentDescription &mid, Deployment::DeploymentPlan &plan, |