summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-12-15 15:57:06 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-12-15 15:57:06 +0000
commite25feba67b3563bce86f430340e8e1b5827bc465 (patch)
tree3ee312c307f400d469c7d56cd6a427729f09dfa9 /lib
parent188909e220734423f652a4e90cecb8a6b1f3df29 (diff)
* signal.c (Init_signal): revert C++ style comment.
[ruby-dev:28041] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9695 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r--lib/.document2
-rw-r--r--lib/timeout.rb49
-rw-r--r--lib/tmpdir.rb3
3 files changed, 38 insertions, 16 deletions
diff --git a/lib/.document b/lib/.document
index 8029750178..4236a2a914 100644
--- a/lib/.document
+++ b/lib/.document
@@ -35,5 +35,7 @@ test/unit.rb
thread.rb
thwait.rb
time.rb
+timeout.rb
+tmpdir.rb
uri
yaml.rb
diff --git a/lib/timeout.rb b/lib/timeout.rb
index 734d87f204..dc92964c0b 100644
--- a/lib/timeout.rb
+++ b/lib/timeout.rb
@@ -1,41 +1,52 @@
+#--
# = timeout.rb
#
# execution timeout
#
-# = Synopsis
+# = Copyright
#
-# require 'timeout'
-# status = Timeout::timeout(5) {
-# # Something that should be interrupted if it takes too much time...
-# }
+# Copyright:: (C) 2000 Network Applied Communication Laboratory, Inc.
+# Copyright:: (C) 2000 Information-technology Promotion Agency, Japan
+#
+#++
#
# = Description
#
-# A way of performing a potentially long-running operation in a thread, and terminating
-# it's execution if it hasn't finished by a fixed amount of time.
+# A way of performing a potentially long-running operation in a thread, and
+# terminating it's execution if it hasn't finished within fixed amount of
+# time.
#
-# Previous versions of timeout didn't provide use a module for namespace. This version
+# Previous versions of timeout didn't use a module for namespace. This version
# provides both Timeout.timeout, and a backwards-compatible #timeout.
#
-# = Copyright
+# = Synopsis
+#
+# require 'timeout'
+# status = Timeout::timeout(5) {
+# # Something that should be interrupted if it takes too much time...
+# }
#
-# Copyright:: (C) 2000 Network Applied Communication Laboratory, Inc.
-# Copyright:: (C) 2000 Information-technology Promotion Agency, Japan
module Timeout
+
+ ##
# Raised by Timeout#timeout when the block times out.
+
class Error<Interrupt
end
+ ##
# Executes the method's block. If the block execution terminates before +sec+
# seconds has passed, it returns true. If not, it terminates the execution
# and raises +exception+ (which defaults to Timeout::Error).
#
- # Note that this is both a method of module Timeout, so you can 'include Timeout'
- # into your classes so they have a #timeout method, as well as a module method,
- # so you can call it directly as Timeout.timeout().
+ # Note that this is both a method of module Timeout, so you can 'include
+ # Timeout' into your classes so they have a #timeout method, as well as a
+ # module method, so you can call it directly as Timeout.timeout().
+
def timeout(sec, exception=Error)
return yield if sec == nil or sec.zero?
+ raise ThreadError, "timeout within critical session" if Thread.critical
begin
x = Thread.current
y = Thread.start {
@@ -50,21 +61,26 @@ module Timeout
end
module_function :timeout
+
end
+##
# Identical to:
#
# Timeout::timeout(n, e, &block).
#
# Defined for backwards compatibility with earlier versions of timeout.rb, see
# Timeout#timeout.
-def timeout(n, e=Timeout::Error, &block)
+
+def timeout(n, e=Timeout::Error, &block) # :nodoc:
Timeout::timeout(n, e, &block)
end
+##
# Another name for Timeout::Error, defined for backwards compatibility with
# earlier versions of timeout.rb.
-TimeoutError = Timeout::Error
+
+TimeoutError = Timeout::Error # :nodoc:
if __FILE__ == $0
p timeout(5) {
@@ -86,3 +102,4 @@ if __FILE__ == $0
}
}
end
+
diff --git a/lib/tmpdir.rb b/lib/tmpdir.rb
index bee99c41cb..3042ed5202 100644
--- a/lib/tmpdir.rb
+++ b/lib/tmpdir.rb
@@ -24,6 +24,9 @@ class Dir
rescue LoadError
end
+ ##
+ # Returns the operating system's temporary file path.
+
def Dir::tmpdir
tmp = '.'
if $SAFE > 0