summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjai <jai@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-11-03 18:39:34 +0000
committerjai <jai@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-11-03 18:39:34 +0000
commit399fad20aa0be697a64e3243950e57f3f5e287ae (patch)
tree07b3163b0e2e45687fd0f9f7c455a57406854208
parentbccf6b1f01b74882529d01b306aa5ef0cb6c9021 (diff)
downloadATCD-399fad20aa0be697a64e3243950e57f3f5e287ae.tar.gz
Wed Nov 3 12:38:21 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
-rw-r--r--TAO/CIAO/ChangeLog14
-rw-r--r--TAO/CIAO/DAnCE/RepositoryManager/Update_Plan.cpp114
-rw-r--r--TAO/CIAO/DAnCE/RepositoryManager/Update_Plan.h8
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,