summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-04-03 19:12:28 +0000
committernanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-04-03 19:12:28 +0000
commit3bdcb4aaa4b2084cd12be78960b67ad8e51edf28 (patch)
treed5e1ad2f7710299470a140e7a0ecdb472e02cd26
parent19ee86a79c744d520d09b8ef475813bea2f9a27b (diff)
downloadATCD-3bdcb4aaa4b2084cd12be78960b67ad8e51edf28.tar.gz
*** empty log message ***
-rw-r--r--TAO/CIAO/ChangeLog8
-rw-r--r--TAO/CIAO/tools/XML_Helpers/Assembly_Handlers.cpp49
-rw-r--r--TAO/CIAO/tools/XML_Helpers/Assembly_Handlers.h5
-rw-r--r--TAO/CIAO/tools/XML_Helpers/Assembly_Spec.h44
4 files changed, 103 insertions, 3 deletions
diff --git a/TAO/CIAO/ChangeLog b/TAO/CIAO/ChangeLog
index 50b8a3380cf..60e6be6c146 100644
--- a/TAO/CIAO/ChangeLog
+++ b/TAO/CIAO/ChangeLog
@@ -1,3 +1,11 @@
+Thu Apr 03 13:11:49 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/XML_Helpers/Assembly_Spec.h:
+ * tools/XML_Helpers/Assembly_Handlers.h:
+ * tools/XML_Helpers/Assembly_Handlers.cpp: Added support for parsing
+ component and home registering info. Otherwise, it'd be hard to
+ use a composed application.
+
Wed Apr 02 17:08:00 2003 Nanbor Wang <nanbor@cs.wustl.edu>
* tools/XML_Helpers/Assembly_Handlers.cpp:
diff --git a/TAO/CIAO/tools/XML_Helpers/Assembly_Handlers.cpp b/TAO/CIAO/tools/XML_Helpers/Assembly_Handlers.cpp
index e69a00efa33..3b1723dc964 100644
--- a/TAO/CIAO/tools/XML_Helpers/Assembly_Handlers.cpp
+++ b/TAO/CIAO/tools/XML_Helpers/Assembly_Handlers.cpp
@@ -400,6 +400,22 @@ CIAO::Partitioning_Handler::endElement (const ACEXML_Char *namespaceURI,
this->home_placement_->insert_tail (this->comp_instance_);
this->comp_instance_ = 0;
}
+ else if (ACE_OS::strcmp (qName, "registercomponent") == 0)
+ {
+ this->comp_instance_->register_info_.enqueue_tail (this->comp_register_info_);
+ }
+ else if (ACE_OS::strcmp (qName, "providesidentifier") == 0)
+ {
+ this->comp_register_info_.type_ =
+ CIAO::Assembly_Placement::componentinstantiation::PROVIDESID;
+ this->comp_register_info_.port_id_ = this->characters_.c_str ();
+ }
+ else if (ACE_OS::strcmp (qName, "consumesidentifier") == 0)
+ {
+ this->comp_register_info_.type_ =
+ CIAO::Assembly_Placement::componentinstantiation::CONSUMESID;
+ this->comp_register_info_.port_id_ = this->characters_.c_str ();
+ }
break;
default:
@@ -531,10 +547,43 @@ CIAO::Partitioning_Handler::startElement (const ACEXML_Char *namespaceURI,
ACEXML_CHECK;
}
+ else if (ACE_OS::strcmp (qName, "registerwithhomefinder") == 0 ||
+ ACE_OS::strcmp (qName, "registerwithnaming") == 0)
+ {
+ const char *name;
+ CIAO::XML_Utils::get_single_attribute ("name",
+ name,
+ atts
+ ACEXML_ENV_ARG_PARAMETER);
+ ACEXML_CHECK;
+
+ CIAO::Assembly_Placement::homeplacement::Register_Info reg_info;
+ if (ACE_OS::strcmp (qName, "registerwithhomefinder") == 0)
+ reg_info.type_ = CIAO::Assembly_Placement::homeplacement::HOMEFINDER;
+ else
+ reg_info.type_ = CIAO::Assembly_Placement::homeplacement::NAMING;
+ reg_info.name_ = name;
+ this->home_placement_->register_info_.enqueue_tail (reg_info);
+ }
// @@ Ignore the rest of element in home placement for now.
break;
case COMPONENT_INSTANTIATION:
+ if (ACE_OS::strcmp (qName, "registercomponent") == 0)
+ {
+ this->comp_register_info_.reset ();
+ }
+ else if (ACE_OS::strcmp (qName, "registerwithnaming") == 0)
+ {
+ const char *name;
+ CIAO::XML_Utils::get_single_attribute ("name",
+ name,
+ atts
+ ACEXML_ENV_ARG_PARAMETER);
+ ACEXML_CHECK;
+
+ this->comp_register_info_.name_ = name;
+ }
break;
diff --git a/TAO/CIAO/tools/XML_Helpers/Assembly_Handlers.h b/TAO/CIAO/tools/XML_Helpers/Assembly_Handlers.h
index 82dc56b6be2..6016637976a 100644
--- a/TAO/CIAO/tools/XML_Helpers/Assembly_Handlers.h
+++ b/TAO/CIAO/tools/XML_Helpers/Assembly_Handlers.h
@@ -231,7 +231,10 @@ namespace CIAO
PH_States state_;
ACE_CString characters_;
- };
+
+ /// Temporary holder when building registration information
+ Assembly_Placement::componentinstantiation::Register_Info comp_register_info_;
+ };
/**
* @class Connections_Handler
diff --git a/TAO/CIAO/tools/XML_Helpers/Assembly_Spec.h b/TAO/CIAO/tools/XML_Helpers/Assembly_Spec.h
index 35cb738a626..5844d9f3e80 100644
--- a/TAO/CIAO/tools/XML_Helpers/Assembly_Spec.h
+++ b/TAO/CIAO/tools/XML_Helpers/Assembly_Spec.h
@@ -80,8 +80,6 @@ namespace CIAO
/// Usage information.
ACE_CString usagename_;
-
-
};
/**
@@ -118,6 +116,28 @@ namespace CIAO
class componentinstantiation : public Node
{
public:
+ typedef enum _if_register_type
+ {
+ COMPONENT,
+ PROVIDESID,
+ CONSUMESID
+ } IF_Register_Type;
+
+ typedef struct _register_info
+ {
+ IF_Register_Type type_;
+
+ ACE_CString port_id_;
+ ACE_CString name_;
+
+ void reset ()
+ {
+ type_ = COMPONENT;
+ port_id_.clear ();
+ name_.clear ();
+ }
+ } Register_Info;
+
componentinstantiation (const char *id);
@@ -126,6 +146,8 @@ namespace CIAO
virtual ~componentinstantiation ();
+ ACE_Unbounded_Queue <Register_Info> register_info_;
+
protected:
};
@@ -135,6 +157,22 @@ namespace CIAO
class homeplacement : public Container
{
public:
+ typedef enum _register_method
+ {
+ HOMEFINDER,
+ NAMING,
+ TRADER // No implementation for trader yet.
+ } Register_Method;
+
+ typedef struct _register_info
+ {
+ /// Register_Method
+ Register_Method type_;
+
+ /// Name to be registered with the finder/namingservice
+ ACE_CString name_;
+ } Register_Info;
+
homeplacement (const char *id,
unsigned long cardinality = 1);
/// Accepting a visitor.
@@ -148,6 +186,8 @@ namespace CIAO
const char *componentfileref (void) const;
//@}
+ ACE_Unbounded_Queue <Register_Info> register_info_;
+
protected:
// idref to component implementation file.
ACE_CString componentfileref_;