Feature Oriented Customizer for Middleware (FOCUS)

Table of Contents


Introduction

TAO is a highly flexible ORB that contains a wide range of ORB configuration options. One or more of these options can be combined to meet various application requirements, such as low-latency, predictable real-time behavior, or small memory footprint. TAO's ORB configuration options are managed by an object-oriented framework within the ORB Core. TAO ORB internally uses several objects called Resources, such as a reactor framework that demultiplexes new connection and data requests from a client or pluggable protocol framework to seamlessly work across different protocols. Strategies, are objects that use the Resource entities to perform various ORB tasks, such as connection management, concurrency, and demultiplexing. The Service Configurator is a framework that can be used to statically and dynamically configure components into middleware and applications. Most often, applications that run on top of TAO use only one concrete type of each resource. For example, predominantly TAO applications use the IIOP protocol for communication. In this case, the underlying framework that realizes the feature can be specialized to remove dynamic dispatching overheads. The Feature Oriented Customizer (FOCUS) tool provides a generic approach to enable middleware developers to specialize middleware Frameworks when the concrete resource type is known a priori. FOCUS provides an XML based transformation engine, where the specialization transformations are captured in XML file and a weaver specializes the code. Some important points to note about FOCUS and specialization:

FOCUS Options Usage

Option Description
--prefix-path prefix-path to the ACE+TAO source distribution location. For example, in most situations this path is same as the ACE_ROOT environment variable.
--reactor-spl select-st, select-mt, tp-reactor Option to specialize the reactor framework with the concrete reactor type.

select-st: select reactor which no locking. Single threaded case.

select-mt: select reactor with locking enabled, multi-threaded case.

tp-reactor: Thread-pool reactor

--protocol-spl iiop Option to specialize the pluggable protocol framework in TAO for the IIOP protocol.
--messaging-spl giop Option to specialize the messaging strategy in TAO with GIOP messaging protocol.
--wait-strategy rw Specialize the Wait Strategy with the concrete Wait Strategy in TAO. This specialization corresponds to the -ORBWaitStrategy option in TAO.
--output-prefix Option to copy over the specialized files to an output directory. This option works only when a single specialization is chose. If multiple specializations are chosen, then this copies the files corresponding to the last specialization.

FOCUS Sample Usage

cmd>$ACE_ROOT/bin/FOCUS/FOCUS.pl --reactor-spl=select-st \ --prefix-path=/build/arvindk/ACE_wrappers --output-prefix=/build/arvindk/spl-files

FOCUS Tool Organization

FOCUS tool structure is organized as follows: A detailed overview of the FOCUS specialization language, that specifies the different types for specialization transformations supported in FOCUS is discussed here: {To be updated shortly!}

Extending FOCUS

To add a new specializations, to FOCUS, one needs to do the following:
  1. Use the FOCUS specification language to model the different specialization Transformations required. Add this to the repository under FOCUS/specializations. Current convention is to use a directory for each family or specific type of specialization and add specialization files for each type in the family.
  2. Annotate the middleware source code where ever applicable to perform the transformations.
  3. Modify the FOCUS.pl script to add a specific option similar to --reactor-spl option for executing the specializations. Also update the specialization table that maps the command-line option to the appropriate specialization file within the repository.