diff options
author | nanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-04-03 19:12:28 +0000 |
---|---|---|
committer | nanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-04-03 19:12:28 +0000 |
commit | 3bdcb4aaa4b2084cd12be78960b67ad8e51edf28 (patch) | |
tree | d5e1ad2f7710299470a140e7a0ecdb472e02cd26 | |
parent | 19ee86a79c744d520d09b8ef475813bea2f9a27b (diff) | |
download | ATCD-3bdcb4aaa4b2084cd12be78960b67ad8e51edf28.tar.gz |
*** empty log message ***
-rw-r--r-- | TAO/CIAO/ChangeLog | 8 | ||||
-rw-r--r-- | TAO/CIAO/tools/XML_Helpers/Assembly_Handlers.cpp | 49 | ||||
-rw-r--r-- | TAO/CIAO/tools/XML_Helpers/Assembly_Handlers.h | 5 | ||||
-rw-r--r-- | TAO/CIAO/tools/XML_Helpers/Assembly_Spec.h | 44 |
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_; |