MACHINE               Rename_Timer

SEES                  Bool_TYPE, Scalar_TYPE

VARIABLES             Rename_cur_time, Rename_sto_time, Rename_exp_time

/*
  Rename_cur_time is implemented as the system call "time(NULL)", and thus
  represents the time in seconds since 00:00:00 UTC, January 1, 1970.;
  it is returned by Rename_GetCurTime.

  Rename_sto_time stores a time (previously obtained through Rename_GetCurTime)
  and may be accessed through Rename_GetStoTime.

  Rename_StartTimer takes an inteval (in seconds) and sets Rename_exp_time;
  Rename_CheckTimer then checks if Rename_exp_time has been reached.
*/

INVARIANT

  Rename_cur_time : SCALAR &
  Rename_sto_time : SCALAR &
  Rename_exp_time : SCALAR

INITIALISATION

  Rename_cur_time :: SCALAR ||
  Rename_sto_time := 0 ||
  Rename_exp_time := 0
 
OPERATIONS

  time <-- Rename_GetCurTime = BEGIN time := Rename_cur_time END;

  Rename_StoTime(time:SCALAR) = BEGIN Rename_sto_time := time END;

  time <-- Rename_GetStoTime = BEGIN time := Rename_sto_time END;

  exp_time <-- Rename_StartTimer(interval:SCALAR) =
    PRE Rename_cur_time + interval <= MaxScalar THEN
      Rename_exp_time := Rename_cur_time + interval ||
      exp_time := Rename_cur_time + interval
    END;

  expired <-- Rename_CheckTimer =
    BEGIN expired := bool ( Rename_exp_time <= Rename_cur_time ) END

END


Analysed Constructs

Hypertext Constructs Page

On-line Help

Help Contents Page
Index

Document Last Updated: Wed Aug 25 17:36:15 1999

B-Toolkit Beta 4.55