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