Group Remote Rendezvous is the only way remote communication and synchronization is provided by Drago. It is an extension to Ada~83 rendezvous which must be accepted by all the living members of the specified group. Drago allows the members of cooperative groups to communicate internally (by means of intragroup communication) and provides them a failure notification facility.
The agent is the unit of distribution of Drago. An agent is a
special kind of abstract object: it has internal state (not directly accesible
from outside the agent) and special remote operations (specified by means
of remote entries) that can be remotely called. The agent may have local
operations (procedures, functions and local entries) and initialization
code. Each agent resides at a single node of the network, although several
agents may reside at the same node. A Drago distributed program is composed
of a number of agents residing at a number of nodes. Drago provides two
kind of agents: replicated agents and cooperative agents.
The main difference between them is that replicated agents can not have
internal tasks, while cooperative agents can. Replicated agents can only
be members of replicated groups, and cooperative agents can only be members
of cooperative groups.
We have written two documents where we explain the internal structure of GNAT. In the first document we describe the GNAT frontend, and how to modify it in order to experiment with Ada extensions. We also describe how we have modified the GNAT frontend to integrate Drago into the GNAT frontend. The Spanish version of this document is available in this server. In the second document (available in English) we describe the GNAT Run-Time and we describe how we have modified it to integrate Drago into the GNAT Run-Time. It is also available a Linux binary distribution.
Miranda, J., Alvarez, A., Arevalo, S. and Guerra, F.
Drago: An Ada Extension to Program Fault-Tolerant Distributed Applications.
Reliable Software Technologies. Ada-Europe'96. 1996. pp.235-246.
Guerra, F. and Miranda, J. and Alvarez, A. and Arevalo, S.
An Ada Library to Program Fault-Tolerant Distributed Applications.
Reliable Software Technologies. Ada-Europe'97. 1997. pp.230-243.
Miranda, J., Guerra, F., Martin, J. and Gonzalez, A.
How to Modify the GNAT Frontend to Experiment with Ada Extensions.
Reliable Software Technologies. Ada-Europe'99. 1999.
Martin, J., Miranda, J., Guerra, F., Gonzalez, A.
Estudio del frontal de GNAT: Incorporacion de Drago (in Spanish).
Miranda, J., Guerra, F., Gonzalez, A., Martin, J.
How to modify the GNAT Run Time to experiment with Ada extensions. (ISBN: 84-87526-68-3)