]> gitweb.factorcode.org Git - factor.git/blob - basis/models/delay/delay.factor
Fix permission bits
[factor.git] / basis / models / delay / delay.factor
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
4 IN: models.delay\r
5 \r
6 TUPLE: delay < model model timeout alarm ;\r
7 \r
8 : update-delay-model ( delay -- )\r
9     [ model>> value>> ] keep set-model ;\r
10 \r
11 : <delay> ( model timeout -- delay )\r
12     f delay new-model\r
13         swap >>timeout\r
14         over >>model\r
15         [ add-dependency ] keep ;\r
16 \r
17 : cancel-delay ( delay -- )\r
18     alarm>> [ cancel-alarm ] when* ;\r
19 \r
20 : start-delay ( delay -- )\r
21     dup\r
22     [ [ f >>alarm update-delay-model ] curry ] [ timeout>> ] bi later\r
23     >>alarm drop ;\r
24 \r
25 M: delay model-changed nip dup cancel-delay start-delay ;\r
26 \r
27 M: delay model-activated update-delay-model ;\r