%% -*- mode: LaTeX -*-
%%
%% Copyright (c) 1999 The University of Utah and
%% the Computer Systems Laboratory at the University of Utah (CSL).
%%
%% This file is part of Flick, the Flexible IDL Compiler Kit.
%%
%% Flick is free software; you can redistribute it and/or modify
%% it under the terms of the GNU General Public License as published by
%% the Free Software Foundation; either version 2 of the License, or
%% (at your option) any later version.
%%
%% Flick is distributed in the hope that it will be useful,
%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
%% GNU General Public License for more details.
%%
%% You should have received a copy of the GNU General Public License
%% along with Flick; see the file COPYING.  If not, write to
%% the Free Software Foundation, 59 Temple Place #330, Boston, MA 02111, USA.
%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\chapter{Runtime}
\label{cha:Runtime}

The Flick compiler cannot stand on its own, it needs a runtime to implement
some basic functionality for the stubs.  This functionality includes things
like transmitting messages, receiving messages, and managing objects.  In
several cases, Flick's back ends use Flick's minimal runtime systems --- they
are designed to get the job done, but usually do not implement the full range
of features that a commercial runtime might.  However, a few of Flick's back
ends are geared toward externally developed runtime systems, such as TAO.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Flick Runtimes}
\label{sec:Runtime:Flick Runtimes}

The set of runtimes located in the \filename{runtime/libraries/link} are
minimal in functionality.  They provide the absolute bare-bones infrastructure
needed to get an object/server and send messages back and forth.  The various
back ends provided with Flick are keyed to use these libraries; however, one
can always adapt the back ends to one's needs.

Flick's runtime libraries are contained under the \filename{runtime/libraries}
directory of the Flick distribution:

\begin{filenamelist}
  \item[libflick-iiop.a] The \IIOP{} runtime library for C stubs, to be using
  with stubs generated by Flick's \IIOP{} back end, \program{flick-c-pbe-iiop}.

  \item[libflick-suntcp.a] The \ONCTCP{} runtime library, to be used with stubs
  generated by Flick's \ONCTCP{} back end, \program{flick-c-pbe-sun}.

  \item[libflick-mach3mig.a] The Mach~3 runtime library, to be used with stubs
  generated by Flick's Mach~3 back end, \program{flick-c-pbe-mach3mig}.

  \item[libflick-trapeze.a] The Trapeze runtime library, to be used with stubs
  generated by Flick's Trapeze back end, \program{flick-c-pbe-trapeze}.
\end{filenamelist}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Khazana, Fluke}
\label{sec:Runtime:Khazana, Fluke}

Khazana and Fluke are separate projects that maintain their own runtimes, so
they are included directly in Flick.  See \flukeurl{} for information about
Fluke and \khazanaurl{} for information about Khazana.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{The ACE ORB (TAO)}
\label{sec:Runtime:TAO}

The IIOPXX back end targets the TAO real-time \ORB{} from Washington University
in St.\ Louis.  This \ORB{} implements the majority of the \CORBA{} spec;
however, the spec doesn't include requirements for transmitting a raw message
to another object and other low level functionality.  Fortunately, TAO exports
enough of this functionality for Flick to do its job.  Unfortunately, this is
not part of the public interface and like the internal implementation details
of any system, it is is likely to change over time.  As such, Flick must be
adapted to these changes as they occur to take advantage of newer versions of
TAO.  As of this writing, the IIOPXX back end has been designed for and tested
with with TAO version~\taoversion{}.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\input{separation}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% End of file.

