E.4.1 Asynchronous Remote Calls
{
AI05-0229-1}
[This subclause introduces the aspect Asynchronous which can be specified
to allow a remote subprogram call to return prior to completion of the
execution of the corresponding remote subprogram body.]
Paragraphs 2 through
7 were deleted.
Static Semantics
{
AI05-0229-1}
For a remote procedure, the following language-defined representation
aspect may be specified:
Asynchronous
The type of aspect Asynchronous is Boolean. If directly specified, the
aspect_definition
shall be a static expression. If not specified, the aspect is False.
Aspect Description for Asynchronous:
Remote procedure calls are asynchronous; the caller continues without
waiting for the call to return.
{
AI05-0229-1}
For a remote access type, the following language-defined representation
aspect may be specified:
Asynchronous
The type of aspect Asynchronous is Boolean. If directly specified, the
aspect_definition
shall be a static expression. If not specified (including by inheritance),
the aspect is False.
Legality Rules
{
AI05-0229-1}
If aspect Asynchronous is specified for a remote procedure, the formal
parameters of the procedure shall all be of mode
in.
{
AI05-0229-1}
If aspect Asynchronous is specified for a remote access type, the type
shall be a remote access-to-class-wide type, or the type shall be a remote
access-to-procedure type with the formal parameters of the designated
profile of the type all of mode
in.
Dynamic Semantics
{
AI05-0229-1}
A remote call is
asynchronous
if it is a call to a procedure, or a call through a value of an access-to-procedure
type, for which aspect Asynchronous is True. In addition, if aspect Asynchronous
is True for a remote access-to-class-wide type, then a dispatching call
on a procedure with a controlling operand designated by a value of the
type is asynchronous if the formal parameters of the procedure are all
of mode
in.
Implementation Requirements
Asynchronous remote procedure calls shall be implemented
such that the corresponding body executes at most once as a result of
the call.
To be honest: It is not clear that this
rule can be tested or even defined formally.
Extensions to Ada 2005
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe