summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-10-21 16:24:40 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-10-21 16:24:40 +0000
commitd5cf9ef5d506b1f15c3bb3aaedfe74b34502cce0 (patch)
treef74f25c4d31a6115df8ed41c7c23623450a633a9
parentca37c21d96b6dc20196d5a3a04af3abfd7bf5ad3 (diff)
downloadATCD-d5cf9ef5d506b1f15c3bb3aaedfe74b34502cce0.tar.gz
ChangeLogTag: Tue Oct 21 10:12:05 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--TAO/ChangeLog22
-rw-r--r--TAO/docs/interfacerepo/index.html26
-rw-r--r--TAO/docs/releasenotes/orbcore.html6
-rw-r--r--TAO/tao/ORB.cpp78
-rw-r--r--TAO/tao/ORB.h24
-rw-r--r--TAO/tao/TypeCodeFactory/README10
-rw-r--r--TAO/tao/TypeCodeFactory/TypeCodeFactory_Adapter_Impl.cpp51
-rw-r--r--TAO/tao/TypeCodeFactory/TypeCodeFactory_Adapter_Impl.h24
-rw-r--r--TAO/tao/TypeCodeFactory_Adapter.h24
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"