Undergraduate Research Project
George Edwards
Introduction
This project was conducted during the summer of 2003. A National Science Foundation Research Experiences for Undergraduates (REU) grant provided the funding for the project, which was conducted as part of the long-running TAO middleware effort. The ACE ORB (TAO) is a standards-based, CORBA middleware framework that allows client invocations on objects to cross distributed boundaries transparently. CORBA objects are interoperable among heterogeneous programming languages, OS platforms, and hardware. TAO is designed using the software practices and patterns discovered in the development of ACE, which is an object-oriented framework that implements many core patterns for concurrent communication software.
Project Goals
The CORBA 2.3 specification defines a new IDL type called valuetype.
The valuetype is a hybrid of the IDL struct and interface: like an
interface, a valuetype supports operations,
inheritance, and attributes; like a struct, a valuetype always has pass-by-value semantics in CORBA
invocations. The goal of my undergraduate research project was to improve
support for the valuetype in TAO. This endeavor
involved the following aspects:
The original TAO valuetype implementation was contributed by Torsten Kuepper, and was subsequently enhanced and corrected by Jeff Parsons and me, George Edwards.
·
The IDL compiler understands valuetype
. Relevant options of TAO's IDL compiler are:
libTAO
must be compiled with TAO_HAS_VALUETYPE
.
·
Valuetype
s can be used as arguments in CORBA
invocations. There is an example in $TAO_ROOT/TAO/examples/OBV/Typed_Events. Valuetype
s can reference other valuetype
objects (but without sharing).
·
Support for valuetypes
as members of IDL aggregate types has been added.
·
Support for inheritance from a concrete
interface (supports
) has
been added. There is an example in $TAO_ROOT/TAO/tests/OBV/Supports.
·
Support for inheritance from abstract interfaces
has been added. There is an example in $TAO_ROOT/TAO/tests/Abstract_Interface.
·
Support for forward declared valuetypes
defined in another compilation unit has been added. See $TAO_ROOT/TAO/examples/OBV/Typed_Events.
·
Support for recursively-defined valuetypes has been added. See $TAO_ROOT/TAO/tests/OBV/Supports.
· Support for user-declared factories has been added. See $TAO_ROOT/TAO/tests/OBV/Factory.