diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-10-21 16:24:40 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-10-21 16:24:40 +0000 |
commit | d5cf9ef5d506b1f15c3bb3aaedfe74b34502cce0 (patch) | |
tree | f74f25c4d31a6115df8ed41c7c23623450a633a9 | |
parent | ca37c21d96b6dc20196d5a3a04af3abfd7bf5ad3 (diff) | |
download | ATCD-d5cf9ef5d506b1f15c3bb3aaedfe74b34502cce0.tar.gz |
ChangeLogTag: Tue Oct 21 10:12:05 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r-- | TAO/ChangeLog | 22 | ||||
-rw-r--r-- | TAO/docs/interfacerepo/index.html | 26 | ||||
-rw-r--r-- | TAO/docs/releasenotes/orbcore.html | 6 | ||||
-rw-r--r-- | TAO/tao/ORB.cpp | 78 | ||||
-rw-r--r-- | TAO/tao/ORB.h | 24 | ||||
-rw-r--r-- | TAO/tao/TypeCodeFactory/README | 10 | ||||
-rw-r--r-- | TAO/tao/TypeCodeFactory/TypeCodeFactory_Adapter_Impl.cpp | 51 | ||||
-rw-r--r-- | TAO/tao/TypeCodeFactory/TypeCodeFactory_Adapter_Impl.h | 24 | ||||
-rw-r--r-- | TAO/tao/TypeCodeFactory_Adapter.h | 24 |
9 files changed, 245 insertions, 20 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index ec5dcfb9c99..239d0822d05 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,25 @@ +Tue Oct 21 10:12:05 2003 Jeff Parsons <j.parsons@vanderbilt.edu> + + * docs/interfacerepo/index.html: + + Updated release notes with recently added IFR features. + + * docs/releasenotes/orbcore.html: + * tao/ORB.cpp: + * tao/ORB.h: + * tao/TypeCodeFactory_Adapter.h: + * tao/TypeCodeFactory/README: + * tao/TypeCodeFactory/TypeCodeFactory_Adapter_Impl.cpp: + * tao/TypeCodeFactory/TypeCodeFactory_Adapter_Impl.h: + + Propagated support for typecodes of valuetypes, + components, homes, eventtypes and recursive types (already + added to TypeCodeFactory and used in the IFR) to the ORB. + Also updated TypeCodeFactory's README file and ORB + release notes. Thanks to Harvinder Sawhney + <harvinder_sawhney@agilent.com> for pointing out the + oversight. + Tue Oct 21 01:39:44 2003 Huang-Ming Huang <hh1@cse.wustl.edu> * orbsvcs/orbsvcs/FtRtEvent/EventChannel/Dynamic_Bitset.h: diff --git a/TAO/docs/interfacerepo/index.html b/TAO/docs/interfacerepo/index.html index 195d46e54d9..8bd63ecadb3 100644 --- a/TAO/docs/interfacerepo/index.html +++ b/TAO/docs/interfacerepo/index.html @@ -23,7 +23,7 @@ Point of contact: <a href="mailto: parsons@cs.wustl.edu">Jeff Parsons</a> -<p>Last Update: April 26, 2002 </p> +<p>Last Update: October 21, 2003 </p> </center> @@ -40,7 +40,7 @@ object and invoke requests using the DII. <ul> - <li><p>Fully compliant with OMG 2.4.2 spec.</p> + <li><p>Fully compliant with OMG 3.0 spec.</p> </li> <li><p>Fully compatible with CorbaScript.</p> @@ -92,18 +92,6 @@ code.</li><p> <li> Add support for recursive structs and unions to the IFR, and for their typecodes to the TypeCodeFactory.</li><p> -<li> When Object By Value is fully supported in TAO (support is rudimentary at -present), implement methods for classes ValueDef and ValueMemberDef in the IFR, -and implement create_value_tc in TypeCodeFactory.</li><p> - -<li> When component support is added to TAO, implement methods for ComponentDef, -ComponentRepository and related classes in the IFR, and create_component_tc and -create_home_tc in TypeCodeFactory.</li><p> - -<li> Try alternate methods of creating object references from repository entries, -other than the servant locator method used at present. An particularly interesting -possibility is to use a generic servant with perfect hashing to look up the operations.</li><p> - <li> Add capability to resize the hash maps that provide low-level storage for the IFR, when the hash map resize feature is added to ACE.</li><p> <li> Add pluggability for commonly used OTS databases.</li><p> @@ -210,4 +198,14 @@ tao_ifr -ORBInitRef InterfaceRepository=corbaloc:iiop:[hostname]:[port]/Interfac <li> tao_ifr can now process multiple IDL files per execution portably on all supported platforms. File names and command line options may occur in any order on the command line.</li><p> +<li> Underlying mechanism of access to the IFR has been changed from servant + locator (where a servant is created and destroyed for each access + invocation) to default servant (where persistent servants and their + associated POAs are created at IFR startup and destroyed at shutdown). + </li><p> + +<li> IFR now supports valuetypes, components, homes and eventtypes. A test + for this support has been added in TAO/orbsvcs/tests/InterfaceRepo/IDL3_Test. + </li><p> + </ul> diff --git a/TAO/docs/releasenotes/orbcore.html b/TAO/docs/releasenotes/orbcore.html index 9a5c18c6a37..580ea7fc92b 100644 --- a/TAO/docs/releasenotes/orbcore.html +++ b/TAO/docs/releasenotes/orbcore.html @@ -208,9 +208,13 @@ Point of contact: <a href="mailto: bala@cs.wustl.edu">Balchandran Natarajan</a> also removed. <p> All of the following protocols were updated: DIOP, IIOP, - SCIOP, SHMIOP, SSLIOP, UIOP, UIPMC. + SCIOP, SHMIOP, SSLIOP, UIOP, UIPMC. </p> </li> + <li><p> Support for the ORB methods create_value_tc, create_component_tc, + create_event_tc, create_home_tc and create_recursive_tc added. </p> + </li> + </ul> <!-- --------------------- --> <a href="#toc">Back to TOC</a> diff --git a/TAO/tao/ORB.cpp b/TAO/tao/ORB.cpp index 4a40e75a770..72e284e9cba 100644 --- a/TAO/tao/ORB.cpp +++ b/TAO/tao/ORB.cpp @@ -872,6 +872,84 @@ CORBA::ORB::create_local_interface_tc ( ACE_ENV_ARG_PARAMETER); } +CORBA::TypeCode_ptr +CORBA::ORB::create_component_tc ( + const char *id, + const char *name + ACE_ENV_ARG_DECL + ) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + TAO_TypeCodeFactory_Adapter *adapter = + ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance ( + TAO_ORB_Core::typecodefactory_adapter_name () + ); + + if (adapter == 0) + { + ACE_THROW_RETURN (CORBA::INTERNAL (), + CORBA::TypeCode::_nil ()); + } + + return adapter->create_component_tc (id, + name + ACE_ENV_ARG_PARAMETER); +} + +CORBA::TypeCode_ptr +CORBA::ORB::create_home_tc ( + const char *id, + const char *name + ACE_ENV_ARG_DECL + ) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + TAO_TypeCodeFactory_Adapter *adapter = + ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance ( + TAO_ORB_Core::typecodefactory_adapter_name () + ); + + if (adapter == 0) + { + ACE_THROW_RETURN (CORBA::INTERNAL (), + CORBA::TypeCode::_nil ()); + } + + return adapter->create_home_tc (id, + name + ACE_ENV_ARG_PARAMETER); +} + +CORBA::TypeCode_ptr +CORBA::ORB::create_event_tc ( + const char *id, + const char *name, + CORBA::ValueModifier type_modifier, + CORBA::TypeCode_ptr concrete_base, + const CORBA::ValueMemberSeq &members + ACE_ENV_ARG_DECL + ) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + TAO_TypeCodeFactory_Adapter *adapter = + ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance ( + TAO_ORB_Core::typecodefactory_adapter_name () + ); + + if (adapter == 0) + { + ACE_THROW_RETURN (CORBA::INTERNAL (), + CORBA::TypeCode::_nil ()); + } + + return adapter->create_event_tc (id, + name, + type_modifier, + concrete_base, + members + ACE_ENV_ARG_PARAMETER); +} + // **************************************************************** #endif /* TAO_HAS_MINIMUM_CORBA */ diff --git a/TAO/tao/ORB.h b/TAO/tao/ORB.h index 57e99807a9f..a0158a68b6d 100644 --- a/TAO/tao/ORB.h +++ b/TAO/tao/ORB.h @@ -350,6 +350,30 @@ namespace CORBA ACE_ENV_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); + virtual CORBA::TypeCode_ptr create_component_tc ( + const char *id, + const char *name + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual CORBA::TypeCode_ptr create_home_tc ( + const char *id, + const char *name + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual CORBA::TypeCode_ptr create_event_tc ( + const char *id, + const char *name, + CORBA::ValueModifier type_modifier, + CORBA::TypeCode_ptr concrete_base, + const CORBA::ValueMemberSeq &members + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC ((CORBA::SystemException)); + #endif /* TAO_HAS_MINIMUM_CORBA */ // = ORB event loop methods. diff --git a/TAO/tao/TypeCodeFactory/README b/TAO/tao/TypeCodeFactory/README index ac1240283f0..97d0b2546b2 100644 --- a/TAO/tao/TypeCodeFactory/README +++ b/TAO/tao/TypeCodeFactory/README @@ -19,9 +19,9 @@ Since the TypeCodeFactory must deal with Interface Repository data types, it depends on the TAO_IFR_Client library. -Typecode creation methods for recursive structs and -unions, valuetypes, and CORBA components have not -yet been implemented. +Support has now been added for valuetypes, components, +homes, eventtypes and recursive types. For an example +of how to create a typecode for a recursive type, see +the OMG CORBA specification section on typecode creation +(in version 3.0, section 4.11.3). -For more information about the TypeCodeFactory, see -ACE_ROOT/TAO/docs/releasenotes/index.html.
\ No newline at end of file diff --git a/TAO/tao/TypeCodeFactory/TypeCodeFactory_Adapter_Impl.cpp b/TAO/tao/TypeCodeFactory/TypeCodeFactory_Adapter_Impl.cpp index 96d28d000e8..c343f03ba7d 100644 --- a/TAO/tao/TypeCodeFactory/TypeCodeFactory_Adapter_Impl.cpp +++ b/TAO/tao/TypeCodeFactory/TypeCodeFactory_Adapter_Impl.cpp @@ -281,6 +281,57 @@ TAO_TypeCodeFactory_Adapter_Impl::create_local_interface_tc ( ACE_ENV_ARG_PARAMETER); } +CORBA::TypeCode_ptr +TAO_TypeCodeFactory_Adapter_Impl::create_component_tc ( + const char *id, + const char *name + ACE_ENV_ARG_DECL + ) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + TAO_TypeCodeFactory_i tcf; + + return tcf.create_component_tc (id, + name + ACE_ENV_ARG_PARAMETER); +} + +CORBA::TypeCode_ptr +TAO_TypeCodeFactory_Adapter_Impl::create_home_tc ( + const char *id, + const char *name + ACE_ENV_ARG_DECL + ) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + TAO_TypeCodeFactory_i tcf; + + return tcf.create_home_tc (id, + name + ACE_ENV_ARG_PARAMETER); +} + +CORBA::TypeCode_ptr +TAO_TypeCodeFactory_Adapter_Impl::create_event_tc ( + const char *id, + const char *name, + CORBA::ValueModifier type_modifier, + CORBA::TypeCode_ptr concrete_base, + const CORBA::ValueMemberSeq &members + ACE_ENV_ARG_DECL + ) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + TAO_TypeCodeFactory_i tcf; + + return tcf.create_event_tc (id, + name, + type_modifier, + concrete_base, + members + ACE_ENV_ARG_PARAMETER); +} + // ********************************************************************* // Initialization and registration of dynamic service object. diff --git a/TAO/tao/TypeCodeFactory/TypeCodeFactory_Adapter_Impl.h b/TAO/tao/TypeCodeFactory/TypeCodeFactory_Adapter_Impl.h index 814a6082675..8ff981bfa85 100644 --- a/TAO/tao/TypeCodeFactory/TypeCodeFactory_Adapter_Impl.h +++ b/TAO/tao/TypeCodeFactory/TypeCodeFactory_Adapter_Impl.h @@ -165,6 +165,30 @@ public: ACE_THROW_SPEC ((CORBA::SystemException)); + virtual CORBA::TypeCode_ptr create_component_tc ( + const char *id, + const char *name + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual CORBA::TypeCode_ptr create_home_tc ( + const char *id, + const char *name + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual CORBA::TypeCode_ptr create_event_tc ( + const char *id, + const char *name, + CORBA::ValueModifier type_modifier, + CORBA::TypeCode_ptr concrete_base, + const CORBA::ValueMemberSeq &members + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC ((CORBA::SystemException)); + /// Used to force the initialization of the ORB code. static int Initializer (void); }; diff --git a/TAO/tao/TypeCodeFactory_Adapter.h b/TAO/tao/TypeCodeFactory_Adapter.h index d6cec53635f..86ced4571b2 100644 --- a/TAO/tao/TypeCodeFactory_Adapter.h +++ b/TAO/tao/TypeCodeFactory_Adapter.h @@ -170,6 +170,30 @@ public: ACE_ENV_ARG_DECL ) ACE_THROW_SPEC ((CORBA::SystemException)) = 0; + + virtual CORBA::TypeCode_ptr create_component_tc ( + const char *id, + const char *name + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC ((CORBA::SystemException)) = 0; + + virtual CORBA::TypeCode_ptr create_home_tc ( + const char *id, + const char *name + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC ((CORBA::SystemException)) = 0; + + virtual CORBA::TypeCode_ptr create_event_tc ( + const char *id, + const char *name, + CORBA::ValueModifier type_modifier, + CORBA::TypeCode_ptr concrete_base, + const CORBA::ValueMemberSeq &members + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC ((CORBA::SystemException)) = 0; }; #include /**/ "ace/post.h" |