diff options
Diffstat (limited to 'ACE/bin/FOCUS/README')
-rw-r--r-- | ACE/bin/FOCUS/README | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/ACE/bin/FOCUS/README b/ACE/bin/FOCUS/README new file mode 100644 index 00000000000..871299833f6 --- /dev/null +++ b/ACE/bin/FOCUS/README @@ -0,0 +1,76 @@ + + FOCUS README + ============ + +Motivation: +---------- +Middleware is often developed as a set of frameworks that can be +extended and configured with alternative implementations of key +components, such as different types of transport protocols e.g., +TCP/IP, VME, or shared memory), event demultiplexing mechanisms +e.g., reactive-, proactive-, or thread-based), request +demultiplexing strategies (e.g., dynamic hashing, perfect +hashing, or active demuxing), and concurrency models (e.g., +thread-per-connection, thread pool, or thread-pre-request). A +particular DRE application, however, may only use a small subset +of the potential framework alternatives. As a result, general-purpose +middleware may be overly extensible, i.e., contain +unnecessary overhead for indirection and dynamic dispatching that is +not needed for use cases in a particular context. +A challenge is to develop middleware specialization +techniques that can eliminate unnecessary overhead associated with +overly extensible middleware framework implementations for certain +product variants or application-specific contexts. + +Example and Approach: +-------------------- +The reactor framework in ACE allows plug and play of different +reactors such as Select, TP, Devpoll etc. The TAO middleware +implementation and applications that run atop TAO typically use +one particular implementation of the Reactor. For example, a +single-threaded application might use select_* reactors. The +Reactor framework uses the bridge pattern to transparently +invoke operations on the right reactors. When the concrete +Reactor is known, it should be possible to specialize the +framework to use the concrete reactor directly rather than use +the bridge. + +As a part of the Feature Oriented Customizer (FOCUS) tool being +,we are trying to specialize frameworks +when the concrete implementation 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. + +To help in this transformation process, FOCUS applies markers +within the source code. These markers are added as special +comments. For example, //@@ REACTOR_SPL_INCLUDE_FORWARD_DECL_ADD_HOOK +represents a hook where forward declarations and include files are +added by the weaver. As these markers are comments therefore should not +affect normal applications in *any* manner. Additionally, applications +that use multiple reactor implementations not be affected/do not need any +change. Currently, these specializations are targeted for TAO middleware, +where applications know the target reactor a priori and want to +leverage the specialization to improve performance. + +FOCUS Installation +------------------ +. FOCUS is written using Perl and does not require any compilation. Additionally + FOCUS does not depend on any external tools. + +Requirements +------------ +. FOCUS has been tested on Perl version 5.8.0 and uses the following Perl + packages: + -- XML::DOM package --> Perl package for processing XML DTDs + +Sample Usage: +------------- +FOCUS can be invoked from the command line in the following manner: +cmd>$ACE_ROOT/bin/FOCUS/FOCUS.pl --reactor-spl=select-st + --prefix-path=/build/arvindk/ACE_wrappers + --output-prefix=/build/arvindk/spl-files + +More Information: +----------------- +More information about FOCUS should be available from the docs directory. |