------------------------------------------------------------------------------
--                                                                          --
--                           POLYORB COMPONENTS                             --
--                                                                          --
--         Copyright (C) 1999-2005 Free Software Foundation, Inc.           --
--                                                                          --
-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
-- under terms of the  GNU General Public License as published by the  Free --
-- Software Foundation;  either version 2,  or (at your option)  any  later --
-- version. PolyORB is distributed  in the hope that it will be  useful,    --
-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
-- TABILITY 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 distributed with PolyORB; see file COPYING. If    --
-- not, write to the Free Software Foundation, 59 Temple Place - Suite 330, --
-- Boston, MA 02111-1307, USA.                                              --
--                                                                          --
-- As a special exception,  if other files  instantiate  generics from this --
-- unit, or you link  this unit with other files  to produce an executable, --
-- this  unit  does not  by itself cause  the resulting  executable  to  be --
-- covered  by the  GNU  General  Public  License.  This exception does not --
-- however invalidate  any other reasons why  the executable file  might be --
-- covered by the  GNU Public License.                                      --
--                                                                          --
--                  PolyORB is maintained by AdaCore.                       --
--                     (email: sales@adacore.com)                           --
--                                                                          --
------------------------------------------------------------------------------

This files lists PolyORB's main features, as well as some known
limitations. These limitations will be addressed in next releases.

Configuration options
---------------------

Different configuration options allow for a complete control of the
middleware.

- PolyORB allows for the dynamic configuration of some of its internals
  through a detailed configuration file (see polyorb.conf for more details).

- 3 tasking runtimes:
  - No tasking;
  - Full tasking, using constructions as proposed by the Ada 95
    Reference Manual;
  - Ravenscar, using the Ada Ravenscar restricted profile for tasking
    constructs.

- ORB's request dispatching policies to control thread allocation:
  - Thread Pool;
  - Thread Per Session (i.e. active connection);
  - Thread Per Request;
  - Single Thread (if 'No Tasking' tasking runtime is used).

- ORB Controller's policy to control concurrency patterns used to
  synchronize the middleware internal threads:
  - Workers;
  - Half Sync/Half Async;
  - Leader/Followers;
  - No Tasking.

Configuration options are detailed in the PolyORB User's Guide.

                               -----------
                               -- CORBA --
                               -----------

PolyORB implements a CORBA application personality, compatible with
the OMG's specifications, that supports:

- Static invocation models based on generated stub and skeletons,
- Dynamic Invocation Interface (DII), 
- Dynamic Skeleton Interface (DSI), 

It also provides an implementation of the CORBA Portable Object
Adapter (POA); CORBA DynamicAny, CORBA PortableInterceptors interfaces; and
RT-CORBA 1.1 and the RTCosScheduling Service.

CORBA Services
--------------

PolyORB implements the following CORBA COS Services:
- Event, 
- Interface Repository, 
- Naming,
- Notification, 
- Time.

Note that the current COS Naming implementation does not support
corbaloc references.

IDL Compiler
------------

PolyORB provides idlac, a CORBA 'IDL to Ada compiler' written entirely
in Ada 95. It generates full stub and skeleton from an IDL contract.

It supports all common IDL constructs; yet it does not support the
following advanced constructs: value-type, abstract interfaces.

                              ----------
                              -- MOMA --
                              ----------

PolyORB offers the Message Oriented Middleware for Ada (MOMA)
personality. It proposes an API comparable to Sun's Java Message
Service, and supports Publish/Subscribe and Point-to-Point.

                              ----------
                              -- GIOP --
                              ----------

GIOP is the Generic Inter-ORB Protocol, defined as part of the CORBA
specifications to support Inter-ORB communications. PolyORB follows
this specification and proposes the following instances of GIOP:

IIOP
----

PolyORB proposes an implementation of the IIOP 1.0, 1.1 and 1.2
protocols.

Request marshaling operations are complete.

IIOP-level interoperability with other ORBs have been tested with
  - Jonathan 3.0
  - omniORB 4.0
  - OpenORB 1.3.0
  - VisiBroker 4.5

SSLIOP
------

PolyORB proposes an implementation of the SSLIOP protocol. It provides
support for data encryption for GIOP requests.

MIOP/UIPMC
----------

PolyORB proposes an implementation of the MIOP 1.0 proposed
specification. It provides group communication mechanisms using
IP/multicast.

DIOP
----

PolyORB proposes a specialization of GIOP for oneway requests based on
UDP/IP.
