GRAYBYTE WORDPRESS FILE MANAGER6472

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/ruby33/share/ruby/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /opt/alt/ruby33/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.4.1"

  # Internal error raised to when a timeout is triggered.
  class ExitException < Exception
    def exception(*)
      self
    end
  end

  # Raised by Timeout.timeout when the block times out.
  class Error < RuntimeError
    def self.handle_timeout(message)
      exc = ExitException.new(message)

      begin
        yield exc
      rescue ExitException => e
        raise new(message) if exc.equal?(e)
        raise
      end
    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) unless watcher.group.enclosed?
    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
      Error.handle_timeout(message, &perform)
    end
  end
  module_function :timeout
end

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
January 01 1970 00:00:00
root / root
0
bigdecimal
--
May 13 2025 08:35:31
root / linksafe
0755
cgi
--
May 13 2025 08:35:29
root / linksafe
0755
csv
--
May 13 2025 08:35:29
root / linksafe
0755
did_you_mean
--
May 13 2025 08:35:29
root / linksafe
0755
digest
--
May 13 2025 08:35:29
root / linksafe
0755
drb
--
May 13 2025 08:35:29
root / linksafe
0755
erb
--
May 13 2025 08:35:29
root / linksafe
0755
error_highlight
--
May 13 2025 08:35:29
root / linksafe
0755
fiddle
--
May 13 2025 08:35:29
root / linksafe
0755
forwardable
--
May 13 2025 08:35:29
root / linksafe
0755
io
--
April 24 2025 07:57:37
root / linksafe
0755
json
--
May 13 2025 08:35:34
root / linksafe
0755
logger
--
May 13 2025 08:35:29
root / linksafe
0755
net
--
May 13 2025 08:35:29
root / linksafe
0755
objspace
--
May 13 2025 08:35:29
root / linksafe
0755
open3
--
May 13 2025 08:35:29
root / linksafe
0755
openssl
--
May 13 2025 08:35:29
root / linksafe
0755
optparse
--
May 13 2025 08:35:29
root / linksafe
0755
prism
--
May 13 2025 08:35:29
root / linksafe
0755
psych
--
May 13 2025 08:35:31
root / linksafe
0755
random
--
May 13 2025 08:35:29
root / linksafe
0755
reline
--
May 13 2025 08:35:29
root / linksafe
0755
rinda
--
May 13 2025 08:35:29
root / linksafe
0755
ripper
--
May 13 2025 08:35:29
root / linksafe
0755
ruby_vm
--
June 14 2024 08:48:58
root / root
0755
set
--
May 13 2025 08:35:29
root / linksafe
0755
syntax_suggest
--
May 13 2025 08:35:29
root / linksafe
0755
syslog
--
May 13 2025 08:35:29
root / linksafe
0755
unicode_normalize
--
May 13 2025 08:35:29
root / linksafe
0755
uri
--
May 13 2025 08:35:29
root / linksafe
0755
vendor_ruby
--
April 24 2025 07:57:37
root / linksafe
0755
yaml
--
May 13 2025 08:35:29
root / linksafe
0755
English.rb
5.539 KB
April 24 2025 07:57:44
root / linksafe
0644
abbrev.rb
3.466 KB
April 24 2025 07:57:44
root / linksafe
0644
base64.rb
13.22 KB
April 24 2025 07:57:44
root / linksafe
0644
benchmark.rb
18.421 KB
April 24 2025 07:57:44
root / linksafe
0644
bigdecimal.rb
0.127 KB
April 24 2025 07:57:44
root / linksafe
0644
bundled_gems.rb
6.856 KB
April 24 2025 07:57:44
root / linksafe
0644
cgi.rb
9.834 KB
April 24 2025 07:57:44
root / linksafe
0644
coverage.rb
0.359 KB
April 24 2025 07:57:44
root / linksafe
0644
csv.rb
92.463 KB
April 24 2025 07:57:44
root / linksafe
0644
date.rb
1.165 KB
April 24 2025 07:57:44
root / linksafe
0644
delegate.rb
11.676 KB
April 24 2025 07:57:42
root / linksafe
0644
did_you_mean.rb
5.355 KB
April 24 2025 07:57:43
root / linksafe
0644
digest.rb
3.302 KB
April 24 2025 07:57:44
root / linksafe
0644
drb.rb
0.049 KB
April 24 2025 07:57:44
root / linksafe
0644
erb.rb
14.534 KB
April 24 2025 07:57:44
root / linksafe
0644
error_highlight.rb
0.082 KB
April 24 2025 07:57:44
root / linksafe
0644
expect.rb
2.191 KB
April 24 2025 07:57:42
root / linksafe
0644
fiddle.rb
2.883 KB
April 24 2025 07:57:44
root / linksafe
0644
fileutils.rb
78.687 KB
April 24 2025 07:57:42
root / linksafe
0644
find.rb
2.517 KB
April 24 2025 07:57:44
root / linksafe
0644
forwardable.rb
9.028 KB
April 24 2025 07:57:42
root / linksafe
0644
getoptlong.rb
20.265 KB
April 24 2025 07:57:44
root / linksafe
0644
ipaddr.rb
20.929 KB
April 24 2025 07:57:42
root / linksafe
0644
json.rb
19.618 KB
April 24 2025 07:57:44
root / linksafe
0644
kconv.rb
5.724 KB
April 24 2025 07:57:44
root / linksafe
0644
logger.rb
22.029 KB
April 24 2025 07:57:44
root / linksafe
0644
mkmf.rb
88.691 KB
April 24 2025 07:57:44
root / linksafe
0644
monitor.rb
6.755 KB
April 24 2025 07:57:42
root / linksafe
0644
mutex_m.rb
2.357 KB
April 24 2025 07:57:44
root / linksafe
0644
objspace.rb
4.137 KB
April 24 2025 07:57:44
root / linksafe
0644
observer.rb
6.379 KB
April 24 2025 07:57:44
root / linksafe
0644
open-uri.rb
25.845 KB
April 24 2025 07:57:44
root / linksafe
0644
open3.rb
47.511 KB
April 24 2025 07:57:44
root / linksafe
0644
openssl.rb
1.027 KB
April 24 2025 07:57:44
root / linksafe
0644
optionparser.rb
0.058 KB
April 24 2025 07:57:44
root / linksafe
0644
optparse.rb
61.82 KB
April 24 2025 07:57:42
root / linksafe
0644
ostruct.rb
14.216 KB
April 24 2025 07:57:43
root / linksafe
0644
pathname.rb
16.851 KB
April 24 2025 07:57:44
root / linksafe
0644
pp.rb
17.244 KB
April 24 2025 07:57:44
root / linksafe
0644
prettyprint.rb
15.928 KB
April 24 2025 07:57:44
root / linksafe
0644
prism.rb
3.171 KB
April 24 2025 07:57:44
root / linksafe
0644
pstore.rb
20.364 KB
April 24 2025 07:57:44
root / linksafe
0644
psych.rb
24.444 KB
April 24 2025 07:57:42
root / linksafe
0644
readline.rb
0.21 KB
April 24 2025 07:57:44
root / linksafe
0644
reline.rb
14.703 KB
April 24 2025 07:57:44
root / linksafe
0644
resolv-replace.rb
1.763 KB
April 24 2025 07:57:44
root / linksafe
0644
resolv.rb
85.026 KB
April 24 2025 07:57:44
root / linksafe
0644
ripper.rb
2.436 KB
April 24 2025 07:57:44
root / linksafe
0644
securerandom.rb
2.057 KB
April 24 2025 07:57:42
root / linksafe
0644
set.rb
24.937 KB
April 24 2025 07:57:44
root / linksafe
0644
shellwords.rb
7.109 KB
April 24 2025 07:57:44
root / linksafe
0644
singleton.rb
3.94 KB
April 24 2025 07:57:44
root / linksafe
0644
socket.rb
44.044 KB
April 24 2025 07:57:44
root / linksafe
0644
syntax_suggest.rb
0.072 KB
April 24 2025 07:57:44
root / linksafe
0644
tempfile.rb
14.726 KB
April 24 2025 07:57:44
root / linksafe
0644
time.rb
23.739 KB
April 24 2025 07:57:44
root / linksafe
0644
timeout.rb
5.688 KB
April 24 2025 07:57:44
root / linksafe
0644
tmpdir.rb
4.932 KB
April 24 2025 07:57:44
root / linksafe
0644
tsort.rb
14.286 KB
April 24 2025 07:57:44
root / linksafe
0644
un.rb
11.168 KB
April 24 2025 07:57:44
root / linksafe
0644
uri.rb
3.058 KB
April 24 2025 07:57:44
root / linksafe
0644
weakref.rb
1.355 KB
April 24 2025 07:57:44
root / linksafe
0644
yaml.rb
2.133 KB
April 24 2025 07:57:44
root / linksafe
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF