SILENT KILLERPanel

Current Path: > > opt > > alt > > ruby22 > lib64 > ruby > 2.2.0


Operation   : Linux premium131.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
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //opt//alt//ruby22/lib64/ruby/2.2.0

NameTypeSizeLast ModifiedActions
cgi Directory - -
digest Directory - -
drb Directory - -
fiddle Directory - -
io Directory - -
irb Directory - -
json Directory - -
matrix Directory - -
net Directory - -
openssl Directory - -
optparse Directory - -
psych Directory - -
racc Directory - -
rake Directory - -
rbconfig Directory - -
rdoc Directory - -
rexml Directory - -
rinda Directory - -
ripper Directory - -
rss Directory - -
rubygems Directory - -
shell Directory - -
syslog Directory - -
unicode_normalize Directory - -
uri Directory - -
webrick Directory - -
x86_64-linux Directory - -
xmlrpc Directory - -
yaml Directory - -
English.rb File 6576 bytes May 31 2014 19:54:55.
abbrev.rb File 3543 bytes July 11 2014 08:16:05.
base64.rb File 2694 bytes May 19 2013 03:10:21.
benchmark.rb File 18151 bytes September 11 2014 08:09:07.
cgi.rb File 10009 bytes August 07 2014 06:14:29.
cmath.rb File 9564 bytes July 03 2015 19:31:05.
csv.rb File 84429 bytes November 04 2014 03:21:53.
date.rb File 980 bytes July 26 2023 14:31:54.
debug.rb File 29775 bytes December 14 2013 14:48:36.
delegate.rb File 10962 bytes July 26 2014 17:11:56.
digest.rb File 2855 bytes July 26 2023 14:31:54.
drb.rb File 19 bytes October 02 2009 10:45:39.
e2mmap.rb File 3865 bytes August 24 2014 07:16:25.
erb.rb File 26986 bytes December 12 2014 10:48:57.
expect.rb File 2195 bytes July 26 2023 14:31:54.
fiddle.rb File 1692 bytes July 26 2023 14:31:54.
fileutils.rb File 48604 bytes March 25 2017 18:24:28.
find.rb File 2542 bytes October 13 2014 07:34:23.
forwardable.rb File 8415 bytes March 25 2017 14:43:16.
getoptlong.rb File 15750 bytes May 19 2013 14:50:47.
ipaddr.rb File 17466 bytes November 24 2015 15:49:21.
irb.rb File 20508 bytes March 28 2016 15:07:06.
json.rb File 1779 bytes July 26 2023 14:31:54.
kconv.rb File 5875 bytes July 26 2023 14:31:54.
logger.rb File 20819 bytes October 27 2016 07:47:14.
mathn.rb File 3936 bytes August 26 2014 12:07:57.
matrix.rb File 54411 bytes November 27 2014 01:03:46.
mkmf.rb File 84575 bytes July 26 2023 14:29:02.
monitor.rb File 7101 bytes November 16 2012 16:55:29.
mutex_m.rb File 2050 bytes February 20 2013 02:51:51.
observer.rb File 5941 bytes August 27 2014 12:21:41.
open-uri.rb File 25175 bytes December 24 2014 09:11:05.
open3.rb File 21041 bytes November 04 2014 03:09:28.
openssl.rb File 528 bytes July 26 2023 14:31:54.
optionparser.rb File 28 bytes May 26 2014 03:25:38.
optparse.rb File 53295 bytes March 25 2017 18:28:27.
ostruct.rb File 8868 bytes March 25 2017 18:35:09.
pathname.rb File 15949 bytes July 26 2023 14:31:54.
pp.rb File 14501 bytes December 05 2014 19:35:19.
prettyprint.rb File 16232 bytes August 22 2014 02:38:59.
prime.rb File 13423 bytes December 10 2014 20:38:13.
profile.rb File 205 bytes October 02 2009 10:45:39.
profiler.rb File 4617 bytes May 19 2013 23:04:36.
pstore.rb File 14895 bytes July 23 2014 19:31:18.
psych.rb File 15235 bytes July 26 2023 14:31:54.
rake.rb File 2282 bytes December 06 2014 00:22:51.
rdoc.rb File 5080 bytes December 07 2014 01:22:37.
resolv-replace.rb File 1774 bytes March 11 2013 13:47:04.
resolv.rb File 73785 bytes May 19 2015 17:05:35.
ripper.rb File 2586 bytes July 26 2023 14:31:54.
rss.rb File 2909 bytes May 11 2011 10:22:16.
rubygems.rb File 32615 bytes February 16 2018 16:27:56.
scanf.rb File 24108 bytes February 15 2014 01:33:03.
securerandom.rb File 9420 bytes April 22 2016 09:17:57.
set.rb File 19605 bytes August 06 2014 11:28:21.
shell.rb File 11575 bytes August 24 2014 07:16:25.
shellwords.rb File 6098 bytes September 05 2014 10:00:46.
singleton.rb File 4114 bytes May 18 2011 14:09:38.
socket.rb File 26210 bytes July 26 2023 14:31:54.
sync.rb File 7429 bytes May 19 2013 03:10:21.
tempfile.rb File 11380 bytes September 21 2014 01:40:21.
thwait.rb File 3392 bytes August 27 2014 12:10:21.
time.rb File 22786 bytes August 03 2015 19:11:41.
timeout.rb File 3725 bytes August 10 2015 17:08:37.
tmpdir.rb File 4231 bytes March 28 2018 14:34:14.
tracer.rb File 6556 bytes July 18 2013 13:50:32.
tsort.rb File 14611 bytes November 26 2014 10:46:50.
ubygems.rb File 268 bytes October 02 2009 10:45:39.
un.rb File 9086 bytes July 05 2013 13:43:25.
unicode_normalize.rb File 3234 bytes January 16 2015 02:06:34.
uri.rb File 3143 bytes November 03 2014 00:33:44.
weakref.rb File 2985 bytes July 26 2014 17:12:11.
webrick.rb File 6850 bytes October 05 2013 23:39:32.
xmlrpc.rb File 8692 bytes December 12 2013 03:09:19.
yaml.rb File 1741 bytes June 26 2014 02:52:46.

Reading File: //opt//alt//ruby22/lib64/ruby/2.2.0/sync.rb

#
#   sync.rb - 2 phase lock with counter
#       $Release Version: 1.0$
#       $Revision: 40825 $
#       by Keiju ISHITSUKA(keiju@ishitsuka.com)
#
# --
#  Sync_m, Synchronizer_m
#  Usage:
#   obj.extend(Sync_m)
#   or
#   class Foo
#       include Sync_m
#       :
#   end
#
#   Sync_m#sync_mode
#   Sync_m#sync_locked?, locked?
#   Sync_m#sync_shared?, shared?
#   Sync_m#sync_exclusive?, sync_exclusive?
#   Sync_m#sync_try_lock, try_lock
#   Sync_m#sync_lock, lock
#   Sync_m#sync_unlock, unlock
#
#  Sync, Synchronizer:
#  Usage:
#   sync = Sync.new
#
#   Sync#mode
#   Sync#locked?
#   Sync#shared?
#   Sync#exclusive?
#   Sync#try_lock(mode) -- mode = :EX, :SH, :UN
#   Sync#lock(mode)     -- mode = :EX, :SH, :UN
#   Sync#unlock
#   Sync#synchronize(mode) {...}
#
#

unless defined? Thread
  raise "Thread not available for this ruby interpreter"
end

##
# A module that provides a two-phase lock with a counter.

module Sync_m
  # lock mode
  UN = :UN
  SH = :SH
  EX = :EX

  # exceptions
  class Err < StandardError
    def Err.Fail(*opt)
      fail self, sprintf(self::Message, *opt)
    end

    class UnknownLocker < Err
      Message = "Thread(%s) not locked."
      def UnknownLocker.Fail(th)
        super(th.inspect)
      end
    end

    class LockModeFailer < Err
      Message = "Unknown lock mode(%s)"
      def LockModeFailer.Fail(mode)
        if mode.id2name
          mode = id2name
        end
        super(mode)
      end
    end
  end

  def Sync_m.define_aliases(cl)
    cl.module_eval %q{
      alias locked? sync_locked?
      alias shared? sync_shared?
      alias exclusive? sync_exclusive?
      alias lock sync_lock
      alias unlock sync_unlock
      alias try_lock sync_try_lock
      alias synchronize sync_synchronize
    }
  end

  def Sync_m.append_features(cl)
    super
    # do nothing for Modules
    # make aliases for Classes.
    define_aliases(cl) unless cl.instance_of?(Module)
    self
  end

  def Sync_m.extend_object(obj)
    super
    obj.sync_extend
  end

  def sync_extend
    unless (defined? locked? and
            defined? shared? and
            defined? exclusive? and
            defined? lock and
            defined? unlock and
            defined? try_lock and
            defined? synchronize)
      Sync_m.define_aliases(singleton_class)
    end
    sync_initialize
  end

  # accessing
  def sync_locked?
    sync_mode != UN
  end

  def sync_shared?
    sync_mode == SH
  end

  def sync_exclusive?
    sync_mode == EX
  end

  # locking methods.
  def sync_try_lock(mode = EX)
    return unlock if mode == UN
    @sync_mutex.synchronize do
      sync_try_lock_sub(mode)
    end
  end

  def sync_lock(m = EX)
    return unlock if m == UN
    Thread.handle_interrupt(StandardError => :on_blocking) do
      while true
        @sync_mutex.synchronize do
          begin
            if sync_try_lock_sub(m)
              return self
            else
              if sync_sh_locker[Thread.current]
                sync_upgrade_waiting.push [Thread.current, sync_sh_locker[Thread.current]]
                sync_sh_locker.delete(Thread.current)
              else
                unless sync_waiting.include?(Thread.current) || sync_upgrade_waiting.reverse_each.any?{|w| w.first == Thread.current }
                  sync_waiting.push Thread.current
                end
              end
              @sync_mutex.sleep
            end
          ensure
            sync_waiting.delete(Thread.current)
          end
        end
      end
    end
    self
  end

  def sync_unlock(m = EX)
    wakeup_threads = []
    @sync_mutex.synchronize do
      if sync_mode == UN
        Err::UnknownLocker.Fail(Thread.current)
      end

      m = sync_mode if m == EX and sync_mode == SH

      runnable = false
      case m
      when UN
        Err::UnknownLocker.Fail(Thread.current)

      when EX
        if sync_ex_locker == Thread.current
          if (self.sync_ex_count = sync_ex_count - 1) == 0
            self.sync_ex_locker = nil
            if sync_sh_locker.include?(Thread.current)
              self.sync_mode = SH
            else
              self.sync_mode = UN
            end
            runnable = true
          end
        else
          Err::UnknownLocker.Fail(Thread.current)
        end

      when SH
        if (count = sync_sh_locker[Thread.current]).nil?
          Err::UnknownLocker.Fail(Thread.current)
        else
          if (sync_sh_locker[Thread.current] = count - 1) == 0
            sync_sh_locker.delete(Thread.current)
            if sync_sh_locker.empty? and sync_ex_count == 0
              self.sync_mode = UN
              runnable = true
            end
          end
        end
      end

      if runnable
        if sync_upgrade_waiting.size > 0
          th, count = sync_upgrade_waiting.shift
          sync_sh_locker[th] = count
          th.wakeup
          wakeup_threads.push th
        else
          wait = sync_waiting
          self.sync_waiting = []
          for th in wait
            th.wakeup
            wakeup_threads.push th
          end
        end
      end
    end
    for th in wakeup_threads
      th.run
    end
    self
  end

  def sync_synchronize(mode = EX)
    Thread.handle_interrupt(StandardError => :on_blocking) do
      sync_lock(mode)
      begin
        yield
      ensure
        sync_unlock
      end
    end
  end

  attr_accessor :sync_mode

  attr_accessor :sync_waiting
  attr_accessor :sync_upgrade_waiting
  attr_accessor :sync_sh_locker
  attr_accessor :sync_ex_locker
  attr_accessor :sync_ex_count

  def sync_inspect
    sync_iv = instance_variables.select{|iv| /^@sync_/ =~ iv.id2name}.collect{|iv| iv.id2name + '=' + instance_eval(iv.id2name).inspect}.join(",")
    print "<#{self.class}.extend Sync_m: #{inspect}, <Sync_m: #{sync_iv}>"
  end

  private

  def sync_initialize
    @sync_mode = UN
    @sync_waiting = []
    @sync_upgrade_waiting = []
    @sync_sh_locker = Hash.new
    @sync_ex_locker = nil
    @sync_ex_count = 0

    @sync_mutex = Mutex.new
  end

  def initialize(*args)
    super
    sync_initialize
  end

  def sync_try_lock_sub(m)
    case m
    when SH
      case sync_mode
      when UN
        self.sync_mode = m
        sync_sh_locker[Thread.current] = 1
        ret = true
      when SH
        count = 0 unless count = sync_sh_locker[Thread.current]
        sync_sh_locker[Thread.current] = count + 1
        ret = true
      when EX
        # in EX mode, lock will upgrade to EX lock
        if sync_ex_locker == Thread.current
          self.sync_ex_count = sync_ex_count + 1
          ret = true
        else
          ret = false
        end
      end
    when EX
      if sync_mode == UN or
          sync_mode == SH && sync_sh_locker.size == 1 && sync_sh_locker.include?(Thread.current)
        self.sync_mode = m
        self.sync_ex_locker = Thread.current
        self.sync_ex_count = 1
        ret = true
      elsif sync_mode == EX && sync_ex_locker == Thread.current
        self.sync_ex_count = sync_ex_count + 1
        ret = true
      else
        ret = false
      end
    else
      Err::LockModeFailer.Fail mode
    end
    return ret
  end
end

##
# An alias for Sync_m from sync.rb

Synchronizer_m = Sync_m

##
# A class that provides two-phase lock with a counter.  See Sync_m for
# details.

class Sync
  include Sync_m
end

##
# An alias for Sync from sync.rb.  See Sync_m for details.

Synchronizer = Sync

SILENT KILLER Tool