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:

 

  1. Enhance the TAO IDL compiler to generate the classes defined in the CORBA C++ mapping for valuetypes.
  2. Implement support for the valuetype in the TAO ORB core.
  3. Develop regression tests that verify correct handling of valuetypes across a wide range of platforms.
  4. Maintain compliance with the CORBA standards.

 

The original TAO valuetype implementation was contributed by Torsten Kuepper, and was subsequently enhanced and corrected by Jeff Parsons and me, George Edwards.

Project Accomplishments

·         The IDL compiler understands valuetype. Relevant options of TAO's IDL compiler are:

libTAO must be compiled with TAO_HAS_VALUETYPE.

·         Valuetypes can be used as arguments in CORBA invocations. There is an example in $TAO_ROOT/TAO/examples/OBV/Typed_Events. Valuetypes 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.