1 ! Copyright (C) 2008 Slava Pestov.
\r
2 ! See http://factorcode.org/license.txt for BSD license.
\r
3 USING: accessors kernel models alarms ;
\r
6 TUPLE: delay < model model timeout alarm ;
\r
8 : update-delay-model ( delay -- )
\r
9 [ model>> value>> ] keep set-model ;
\r
11 : <delay> ( model timeout -- delay )
\r
15 [ add-dependency ] keep ;
\r
17 : cancel-delay ( delay -- )
\r
18 alarm>> [ cancel-alarm ] when* ;
\r
20 : start-delay ( delay -- )
\r
22 [ [ f >>alarm update-delay-model ] curry ] [ timeout>> ] bi later
\r
25 M: delay model-changed nip dup cancel-delay start-delay ;
\r
27 M: delay model-activated update-delay-model ;
\r