diff options
Diffstat (limited to 'ACE/bin/FOCUS/docs/FOCUS.html')
-rw-r--r-- | ACE/bin/FOCUS/docs/FOCUS.html | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/ACE/bin/FOCUS/docs/FOCUS.html b/ACE/bin/FOCUS/docs/FOCUS.html new file mode 100644 index 00000000000..6b00dfb020d --- /dev/null +++ b/ACE/bin/FOCUS/docs/FOCUS.html @@ -0,0 +1,165 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<!-- $Id$ --> + <title>FOCUS</title> +</head> +<body bgcolor="#ffffff" link="#000fff" vlink="#ff0f0f" text="#000000"> +<hr> +<p></p> +<h2 align="center">Feature Oriented Customizer for Middleware (FOCUS)</h2> +<h3>Table of Contents</h3> +<ul> + <li><a href="#MOT">Introduction</a> </li> + <li><a href="#FCS-OVR">FOCUS Options overview</a> </li> + <li><a href="#FCS-USAGE">FOCUS Sample Usage</a> </li> + <li><a href="#FCS-ORG">FOCUS Structure & Organization</a> </li> + <li><a href="#FCS-ORG">Extending FOCUS</a> </li> +</ul> + +<hr> +<h3><b><a name="MOT">Introduction</a></b></h3> +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 +<b>Resources</b>, such +as a <em>reactor</em> framework that demultiplexes new connection and +data requests from a client or <em>pluggable protocol</em> framework +to seamlessly work across different protocols. <b>Strategies</b>, are +objects that use the <b>Resource</b> entities to perform various ORB tasks, +such as connection management, concurrency, and demultiplexing. +The <b>Service Configurator</b> 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: +<ul> + <li>It does not modify an interface. So no application level changes are + necessary. + </li> + <li>Once a framework has been customized using FOCUS for a concrete component, + other components do not work. For example, specializing the protocol + framework with IIOP, precludes the ability to plug-in other protocol + implementations. + </li> + <li>It provides a source-to-source transformations that require re-compiling + the source. + </li> +</ul> + +<hr> +<h3><b><a name="FCS-OVR">FOCUS Options Usage</a></b></h3> +<table border="2" cellpadding="0" cellspacing="2"> + <tbody> + <tr> + <th>Option</th> + <th>Description</th> + </tr> + <tr> + <td>--prefix-path</td> + <td>prefix-path to the ACE+TAO source distribution location. For example, + in most situations this path is same as the ACE_ROOT environment + variable. + </td> + </tr> + <tr> + <td>--reactor-spl <em>select-st</em>, <em>select-mt</em>, <em>tp</em></td> + <td>Option to specialize the reactor framework with the + concrete reactor type. + <p>select-st: select reactor which no locking. Single threaded case.</p> + <p>select-mt: select reactor with locking enabled, multi-threaded case. + </p> + <p>tp-reactor: Thread-pool reactor</p> + </td> + </tr> + <tr> + <td>--protocol-spl <em>iiop</em></td> + <td>Option to specialize the pluggable protocol framework in TAO for the + IIOP protocol. + </tr> + <tr> + <td>--messaging-spl <em>giop</em></td> + <td>Option to specialize the messaging strategy in TAO with GIOP + messaging protocol. + </td> + </tr> + <tr> + <td>--wait-strategy <em>rw</em></td> + <td>Specialize the Wait Strategy with the concrete Wait Strategy in TAO. + This specialization corresponds to the <em>-ORBWaitStrategy</em> + option in TAO. + </td> + </tr> + <td>--output-prefix</td> + <td>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. + </td> + </tbody> +</table> + +<hr> +<h3><b><a name="FCS-USAGE">FOCUS Sample Usage</a></b></h3> +cmd>$ACE_ROOT/bin/FOCUS/FOCUS.pl --reactor-spl=select-st \ + --prefix-path=/build/arvindk/ACE_wrappers + --output-prefix=/build/arvindk/spl-files + +<hr> +<h3><b><a name="FCS-ORG">FOCUS Tool Organization</a></b></h3> +FOCUS tool structure is organized as follows: +<ul> + <li>Parser directory has all parser related modules</li> + <li>specializations: Rules data base that has the XML files required for + performing the individual specialization transformations. For each + specialization we have the following sub directories: + <ul> + <li>Reactor_Family: Specializations for ACE_Reactor family</li> + <li>Protocol_Family: Specializations for TAO's protocol family</li> + <li>Messaging_Strategy: Specializations for TAO's Messaging Strategy</li> + <li>Wait_Strategy: Specializations for TAO's Wait strategies</li> + </ul> + </li> +</ul> + +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!} + +<hr> +<h3><b><a name="FCS-ORG">Extending FOCUS</a></b></h3> +To add a new specializations, to FOCUS, one needs to do the following: +<ol> + <li>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. + </li> + <li>Annotate the middleware source code where ever applicable to perform the + transformations. + </li> + <li>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. + </li> +</ol> + +<hr> + +</body> +</html> |