]> gitweb.factorcode.org Git - factor.git/commitdiff
ui.tools.listener: only wait up to 5 seconds for the listener to start
authorBjörn Lindqvist <bjourne@gmail.com>
Fri, 27 Nov 2015 12:15:17 +0000 (13:15 +0100)
committerBjörn Lindqvist <bjourne@gmail.com>
Fri, 27 Nov 2015 12:15:17 +0000 (13:15 +0100)
otherwise unit tests can wait forever if there is an error in listener-thread

basis/concurrency/flags/flags-docs.factor
basis/ui/tools/listener/listener-docs.factor
basis/ui/tools/listener/listener.factor

index 2d622d6b30bf8e4468306a2c85c7c7479b367afe..006d00b8e1f18b9dd9414558f29c82cfdb50d0fd 100644 (file)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2008 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: help.markup help.syntax ;
+USING: calendar concurrency.conditions help.markup help.syntax ;
 IN: concurrency.flags
 
 HELP: flag
@@ -10,6 +10,10 @@ HELP: <flag>
 { $values { "flag" flag } }
 { $description "Creates a new flag." } ;
 
+HELP: lower-flag
+{ $values { "flag" flag } }
+{ $description "Attempts to lower a flag. If the flag has been raised previously, returns immediately, otherwise waits for it to be raised first." } ;
+
 HELP: raise-flag
 { $values { "flag" flag } }
 { $description "Raises a flag, notifying any threads waiting on it. Does nothing if the flag has already been raised." } ;
@@ -18,9 +22,9 @@ HELP: wait-for-flag
 { $values { "flag" flag } }
 { $description "Waits for a flag to be raised. If the flag has already been raised, returns immediately." } ;
 
-HELP: lower-flag
-{ $values { "flag" flag } }
-{ $description "Attempts to lower a flag. If the flag has been raised previously, returns immediately, otherwise waits for it to be raised first." } ;
+HELP: wait-for-flag-timeout
+{ $values { "flag" flag } { "timeout" duration } }
+{ $description "Waits for a flag to be raised or throws a " { $link timed-out-error } " if the flag wasn't raised in time." } ;
 
 ARTICLE: "concurrency.flags" "Flags"
 "A " { $emphasis "flag" } " is a condition notification device which can be in one of two states: " { $emphasis "lowered" } " (the initial state) or " { $emphasis "raised" } "."
index be9d01f2383dd9cdd599747915ba494ee083b113..5edaaebd81a5e83e97bb3e423a649392fa2f2f05 100644 (file)
@@ -1,7 +1,7 @@
-USING: help.markup help.syntax help.tips io kernel listener
-ui.commands ui.gadgets ui.gadgets.editors ui.gadgets.panes
-ui.operations ui.tools.common ui.tools.listener.completion vocabs
-vocabs.refresh words ;
+USING: help.markup help.syntax help.tips io kernel listener sequences
+ui.commands ui.gadgets.editors ui.gadgets.panes ui.operations
+ui.tools.common ui.tools.listener.completion vocabs vocabs.refresh
+words ;
 IN: ui.tools.listener
 
 HELP: <listener-gadget>
@@ -24,9 +24,13 @@ HELP: interactor-busy?
 { $values { "interactor" interactor } { "?" boolean } }
 { $description "We're busy if there's no thread to resume." } ;
 
+HELP: interactor-read
+{ $values { "interactor" interactor } { "lines" sequence } }
+{ $description "Implements the " { $link stream-readln } " generic for the interactor." } ;
+
 HELP: wait-for-listener
 { $values { "listener" listener-gadget } }
-{ $description "Wait for the listener to start." } ;
+{ $description "Wait up to five seconds for the listener to start." } ;
 
 ARTICLE: "ui-listener" "UI listener"
 "The graphical listener adds input history and word and vocabulary completion. A summary with any outstanding error conditions is displayed before every prompt (see " { $link "ui.tools.error-list" } " for details)."
index b2576d8a07b618f5edd409a32b00f3f0db24cb52..4d543b5b13e19f926b681a386fe4efbc159ca649 100644 (file)
@@ -222,7 +222,7 @@ M: listener-gadget focusable-child*
     input>> dup popup>> or ;
 
 : wait-for-listener ( listener -- )
-    input>> flag>> wait-for-flag ;
+    input>> flag>> 5 seconds wait-for-flag-timeout ;
 
 : listener-busy? ( listener -- ? )
     input>> interactor-busy? ;