factor/basis/models/delay/delay.factor

28 lines
743 B
Factor
Raw Normal View History

! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors kernel models alarms ;
2008-07-04 18:58:37 -04:00
IN: models.delay
TUPLE: delay < model model timeout alarm ;
2008-07-04 18:58:37 -04:00
: update-delay-model ( delay -- )
[ delay-model model-value ] keep set-model ;
2008-07-04 18:58:37 -04:00
: <delay> ( model timeout -- delay )
f delay new-model
swap >>timeout
over >>model
[ add-dependency ] keep ;
2008-07-04 18:58:37 -04:00
: cancel-delay ( delay -- )
delay-alarm [ cancel-alarm ] when* ;
: start-delay ( delay -- )
dup
[ [ f >>alarm update-delay-model ] curry ] [ timeout>> ] bi later
>>alarm drop ;
2008-07-04 18:58:37 -04:00
M: delay model-changed nip dup cancel-delay start-delay ;
M: delay model-activated update-delay-model ;