Index

Package: Generic_Atomic_Action (generic)

Description

generic
   with package Atomic_Action_Types is
Uwe R. Zimmer, Australia, 2013 Synopsis: Bundles individual atomic action parts and provides a single procedure to perform the atomic action. Atomic actions are indivisible and and instantaneous. In case of an atomic action, which consists itself of multiple concurrent parts, some support for these conditions are provided here: Either - the full set of concurrent parts is completing their action-part fully and without timing violations or other exceptions or - all parts of the action are executing a cleanup procedure to restore the initial state (in case that any part of the action was not able to complete fully) - regardless whether they completed their action-part fully or to some extend, or whether they have not even started executing it. Each concurrent part of the atomic action is defined by: (see also the definitions in atomic_action_types.ads) 1. A minimal and maximal delay after which this part of the atomic action is started. First this part is delayed by the minimal delay time. Then, if the action-part is not active after the maximal delay time, the whole action is stopped. 2. This local action-part is started. 3. If this action-part is not completed before the maximal elapse time (starting with the actual activation of the task, after the delay) and before the absolute deadline, the whole action is stopped. 4. If this action-part is exiting with any exception, the whole action is stopped. 5. If the whole action is stopped, each part excecutes its 'cleanup' procedure, in order to fully restore the initial state. All parts are blocked until either every part has completed its action-part or every part (in case of a stopped action) has completed its 'cleanup' procedure. Therefore the atomic action can only be completed with all part successfully completed, or reset to the initial state. The final state of the atomic action is determined and exceptions are propagated in case the atomic action was not successfully completed. Timing violations are indicated with specific exceptions. All other exceptions are propagated as the 'Failure_State' exception. ----------------------------------------------------------------

Packages

Atomic_Action_Types (new Generic_Atomic_Action_Types)

package Atomic_Action_Types is new Generic_Atomic_Action_Types (<>);

Constants & Global variables

Subprograms & Entries