-- RealEvent.mesa, an interface for time-stamped streams of REAL values
-- Last Modified On 21-Jan-82 10:44:38 By Paul Rovner
DIRECTORY
RefAnyStream USING[Handle];
RealEvent: DEFINITIONS =
{
--TYPEs
Handle: TYPE = REF Object;
Object: TYPE = RECORD[sampleValue: REAL, time: Seconds];
StreamHandle: TYPE = RefAnyStream.Handle;
Seconds: TYPE = REAL;
-- PROCEDUREs
CreateTimerDrivenStream: PROC[interval: Seconds,
sampler: PROC[REF ANY] RETURNS[REAL],
stateInfo: REF ANY ← NIL]
RETURNS[StreamHandle];
-- This creates a new REF ANY stream for RealEvent.Handle's
-- and returns it. The "put" operation raises an error. "endOf"
-- and "empty" are not implemented yet. Subsequent to the return
-- of CreateTimerDrivenStream, sampler will be invoked every
-- specified interval to provide a new data value. "stateInfo"
-- is passed back to sampler when it is called. The value
-- returned by sampler is bundled in a new Object with the
-- time at which sampler returned. The new Handle is "put"
-- onto the REF ANY stream. Closing the REF ANY stream will
-- stop associated calls on sampler. BEWARE: don't forget to
-- Close the REF ANY stream. It would be unwise to specify
-- an interval smaller than a couple of seconds.
CreateEventDrivenStream: PROC[] RETURNS[StreamHandle];
-- This creates a new REF ANY stream for RealEvent.Handle's and
-- returns it. "endOf" and "empty" are not implemented yet.
}.