Files
PolyORB/doc/RT-CORBA.rst
Thomas Quinot 534bd94743 Convert PolyORB UG to Sphinx
NB28-010

Subversion-branch: /trunk/polyorb
Subversion-revision: 239160
2015-05-29 12:47:39 +00:00

197 lines
4.6 KiB
ReStructuredText

.. _RT-CORBA:
********
RT-CORBA
********
.. index:: RT-CORBA
.. _What_you_should_know_before_Reading_this_section:
What you should know before Reading this section
================================================
This section assumes that the reader is familiar with the Real-Time
CORBA specifications described in :cite:`rt-corba1.1:2002` and :cite:`rt-corba2.0:2003`.
.. _Installing_RT-CORBA:
Installing RT-CORBA
===================
The RT-CORBA library is installed as part of the installation of the
CORBA personality. Note that you may have to select specific run-time
options to enable full compliance with RT-CORBA specifications and
ensure real time behavior.
.. _Configuring_RT-CORBA:
Configuring RT-CORBA
====================
This section details how to configure your application to use the
RT-CORBA library.
.. _`PolyORB.RTCORBA_P.Setup`:
`PolyORB.RTCORBA_P.Setup`
-------------------------
.. index:: `PolyORB.RTCORBA_P.Setup`
The RT-CORBA specifications mandate that the implementation provide a
mechanism to set up some of its internals.
The package `PolyORB.RTCORBA_P.Setup` provides an API to set up
the `PriorityMapping` and `PriorityTransform` objects.
.. literalinclude:: polyorb-rtcorba_p-setup.ads
:language: ada
.. _`RTCORBA.PriorityMapping`:
`RTCORBA.PriorityMapping`
=========================
.. index:: `RTCORBA.PriorityMapping`
PolyORB provides different implementations of this specification:
* `RTCORBA.PriorityMapping.Direct` maps CORBA priorities
directly to native priorities. If the CORBA priority is not in
`System.Priority'Range`, then the mapping is not possible.
* `RTCORBA.PriorityMapping.Linear` maps each individual
native priority to a contiguous range of CORBA priorities, so that the
complete CORBA priority range is used up for the mapping. See
:file:`rtcorba-prioritymapping-linear.adb` for more details.
.. _RTCosScheduling_Service:
RTCosScheduling Service
=======================
.. index:: RTCosScheduling Service
.. _Overview:
Overview
--------
PolyORB provides an implementation of the RTCosScheduling service
defined in :cite:`rt-corba1.1:2002`.
PolyORB uses some permissions stated in the specifications to allow for
easy configuration of `ClientScheduler` and
`ServerScheduler`, defined in the following sections.
Additional information on the use of the API may be found in the
RTCosScheduling example in
:file:`examples/corba/rtcorba/rtcosscheduling`.
.. _`RTCosScheduling::ClientScheduler`:
`RTCosScheduling::ClientScheduler`
----------------------------------
Client side *activities* are defined in a configuration file that can
be loaded using
:file:`RTCosScheduling.ClientScheduler.Impl.Load_Configuration_File`
On the client side, the user can set up
* current task priority, using registered `PriorityMapping` object.
This file has the following syntax, derived from PolyORB configuration
file syntax:
::
# Name of the activity
[activity activity1]
# Activity priority, in RTCORBA.Priority'Range
priority=10000
In this example, activity `activity1` is defined with priority
`10'000`.
.. _`RTCosScheduling::ServerScheduler`:
`RTCosScheduling::ServerScheduler`
----------------------------------
Server side *POAs* and *objects* are defined in a configuration
file that can be loaded using
:file:`RTCosScheduling.ClientScheduler.Impl.Load_Configuration_File`
On the server side, the user can set up
* object priority, using registered `PriorityMapping` object.
* all RT-CORBA-specific POA configuration parameters.
This file has the following syntax, derived from PolyORB configuration
file syntax:
::
# Name of the object
[object object1]
# Object priority, in RTCORBA.Priority'Range
priority=10000
In this example, object `object1` is defined with priority
`10'000`.
::
# Name of the POA
[poa poa1]
# PriorityModelPolicy for POA
priority_model=CLIENT_PROPAGATED
default_priority=0 # not meaningful for CLIENT_PROPAGATED
# Threadpools attached to POA
threadpool_id=1
# Name of the POA
[poa poa2]
# PriorityModelPolicy for POA
priority_model=SERVER_DECLARED
default_priority=40
# Threadpools attached to POA
threadpool_id=2
# Name of the POA
[poa poa3]
# POA with no defined policies
In this example, Two POAs are defined: POA `poa1` will use the
`CLIENT_PROPAGATED` PriorityModel Policy, default value is not
meaningful for this configuration, `poa1` will use the Threadpool
#1; POA `poa2` will use the `SERVER_DECLARED` PriorityModel
Policy, default server priority is 40, `poa2` will use the
Threadpool #2. Note that both policies are optional and can be omitted.