Contents   Index   Search   Previous   Next


9.7.2 Timed Entry Calls

1
   [A timed_entry_call issues an entry call that is cancelled if the call (or a requeue-with-abort of the call) is not selected before the expiration time is reached. {time-out: See timed_entry_call} ]

Syntax

2
timed_entry_call ::=
  select
   entry_call_alternative
  or
   delay_alternative
  end select;
3
entry_call_alternative ::=
  entry_call_statement [sequence_of_statements]

Dynamic Semantics

4
   {execution (timed_entry_call) [partial]} For the execution of a timed_entry_call, the entry_name and the actual parameters are evaluated, as for a simple entry call (see 9.5.3). The expiration time (see 9.6) for the call is determined by evaluating the delay_expression of the delay_alternative; the entry call is then issued.
5
   If the call is queued (including due to a requeue-with-abort), and not selected before the expiration time is reached, an attempt to cancel the call is made. If the call completes due to the cancellation, the optional sequence_of_statements of the delay_alternative is executed; if the entry call completes normally, the optional sequence_of_statements of the entry_call_alternative is executed.
5.a
Ramification: The fact that the syntax calls for an entry_call_statement means that this fact is used in overload resolution. For example, if there is a procedure X and an entry X (both with no parameters), then "select X; ..." is legal, because overload resolution knows that the entry is the one that was meant.

Examples

6
   Example of a timed entry call:
7
select
   Controller.Request(Medium)(Some_Item);
or
   delay 45.0;
   --  controller too busy, try something else
end select;

Wording Changes from Ada 83

7.a
This clause comes before the one for Conditional Entry Calls, so we can define conditional entry calls in terms of timed entry calls.

Contents   Index   Search   Previous   Next   Legal