$67 GRAYBYTE WORDPRESS FILE MANAGER $55

SERVER : premium201.web-hosting.com #1 SMP Wed Mar 26 12:08:09 UTC 2025
SERVER IP : 172.67.217.254 | ADMIN IP 216.73.216.36
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/opt/alt/ruby34/share/gems/gems/rake-13.2.1/lib/rake/

HOME
Current File : /opt/alt/ruby34/share/gems/gems/rake-13.2.1/lib/rake//promise.rb
# frozen_string_literal: true
module Rake

  # A Promise object represents a promise to do work (a chore) in the
  # future. The promise is created with a block and a list of
  # arguments for the block. Calling value will return the value of
  # the promised chore.
  #
  # Used by ThreadPool.
  #
  class Promise               # :nodoc: all
    NOT_SET = Object.new.freeze # :nodoc:

    attr_accessor :recorder

    # Create a promise to do the chore specified by the block.
    def initialize(args, &block)
      @mutex = Mutex.new
      @result = NOT_SET
      @error = NOT_SET
      @args = args
      @block = block
    end

    # Return the value of this promise.
    #
    # If the promised chore is not yet complete, then do the work
    # synchronously. We will wait.
    def value
      unless complete?
        stat :sleeping_on, item_id: object_id
        @mutex.synchronize do
          stat :has_lock_on, item_id: object_id
          chore
          stat :releasing_lock_on, item_id: object_id
        end
      end
      error? ? raise(@error) : @result
    end

    # If no one else is working this promise, go ahead and do the chore.
    def work
      stat :attempting_lock_on, item_id: object_id
      if @mutex.try_lock
        stat :has_lock_on, item_id: object_id
        chore
        stat :releasing_lock_on, item_id: object_id
        @mutex.unlock
      else
        stat :bailed_on, item_id: object_id
      end
    end

    private

    # Perform the chore promised
    def chore
      if complete?
        stat :found_completed, item_id: object_id
        return
      end
      stat :will_execute, item_id: object_id
      begin
        @result = @block.call(*@args)
      rescue Exception => e
        @error = e
      end
      stat :did_execute, item_id: object_id
      discard
    end

    # Do we have a result for the promise
    def result?
      [email protected]?(NOT_SET)
    end

    # Did the promise throw an error
    def error?
      [email protected]?(NOT_SET)
    end

    # Are we done with the promise
    def complete?
      result? || error?
    end

    # free up these items for the GC
    def discard
      @args = nil
      @block = nil
    end

    # Record execution statistics if there is a recorder
    def stat(*args)
      @recorder.call(*args) if @recorder
    end

  end

end


Current_dir [ NOT WRITEABLE ] Document_root [ NOT WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
1 Jan 1970 12.00 AM
root / root
0
ext
--
10 Feb 2026 9.39 AM
root / linksafe
0755
loaders
--
10 Feb 2026 9.39 AM
root / linksafe
0755
application.rb
25.887 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
backtrace.rb
0.921 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
clean.rb
2.028 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
cloneable.rb
0.438 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
cpu_counter.rb
2.325 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
default_loader.rb
0.259 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
dsl_definition.rb
5.57 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
early_time.rb
0.361 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
file_creation_task.rb
0.683 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
file_list.rb
12.453 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
file_task.rb
1.543 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
file_utils.rb
3.761 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
file_utils_ext.rb
3.838 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
invocation_chain.rb
1.186 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
invocation_exception_mixin.rb
0.45 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
late_time.rb
0.288 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
linked_list.rb
2.77 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
multi_task.rb
0.337 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
name_space.rb
0.686 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
packagetask.rb
6.018 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
phony.rb
0.372 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
private_reader.rb
0.385 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
promise.rb
2.28 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
pseudo_status.rb
0.396 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
rake_module.rb
1.492 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
rake_test_loader.rb
0.466 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
rule_recursion_overflow_error.rb
0.373 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
scope.rb
0.877 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
task.rb
12.743 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
task_argument_error.rb
0.146 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
task_arguments.rb
2.41 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
task_manager.rb
10.024 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
tasklib.rb
0.161 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
testtask.rb
5.19 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
thread_history_display.rb
1.129 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
thread_pool.rb
4.671 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
trace_output.rb
0.562 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
version.rb
0.203 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
win32.rb
1.516 KB
27 Jan 2026 4.00 PM
root / linksafe
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025 CONTACT ME
Static GIF