Contents   Index   Search   Related Documents   Previous   Next
 9.7.2 Timed Entry Calls
1/2
     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. A
procedure call may appear rather than an entry call for cases where the
procedure might be implemented by an entry. 
 
Syntax
2
timed_entry_call
::= 
  select
   entry_call_alternative
  or
   delay_alternative
  end select;
 
3/2
entry_call_alternative
::= 
  procedure_or_entry_call [
sequence_of_statements]
 
3.1/2
procedure_or_entry_call
::= 
  procedure_call_statement | 
entry_call_statement 
Legality Rules
3.2/2
       If a 
procedure_call_statement
is used for a 
procedure_or_entry_call,
the 
procedure_name or 
procedure_prefix
of the 
procedure_call_statement
shall statically denote an entry renamed as a procedure or (a view of)
a primitive subprogram of a limited interface whose first parameter is
a controlling parameter (see 
3.9.2). 
 
Static Semantics
3.3/2
       If a procedure_call_statement
is used for a procedure_or_entry_call,
and the procedure is implemented by an entry, then the procedure_name,
or procedure_prefix and possibly
the first parameter of the procedure_call_statement,
determine the target object of the call and the entry to be called. 
Dynamic Semantics
4/2
     For the execution of a 
timed_entry_call,
the 
entry_name, 
procedure_name,
or 
procedure_prefix , and
actual parameters are evaluated as for a simple entry call (see 
9.5.3)
or procedure call (see 
6.4). The expiration
time (see 
9.6) for the call is determined by
evaluating the 
delay_expression
of the 
delay_alternative. If the
call is an entry call or a call on a procedure implemented by an entry,
the entry call is then issued. Otherwise, the call proceeds as described
in 
6.4 for a procedure call, followed by the
sequence_of_statements of the 
entry_call_alternative;
the 
sequence_of_statements of the
delay_alternative is ignored.
 
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. 
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;
Contents   Index   Search   Related Documents   Previous   Next   Legal