$62 GRAYBYTE WORDPRESS FILE MANAGER $96

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

/opt/alt/ruby18/lib64/ruby/1.8/drb/

HOME
Current File : /opt/alt/ruby18/lib64/ruby/1.8/drb//timeridconv.rb
require 'drb/drb'
require 'monitor'

module DRb
  class TimerIdConv < DRbIdConv
    class TimerHolder2
      include MonitorMixin

      class InvalidIndexError < RuntimeError; end

      def initialize(timeout=600)
	super()
	@sentinel = Object.new
	@gc = {}
	@curr = {}
	@renew = {}
	@timeout = timeout
	@keeper = keeper
      end

      def add(obj)
	synchronize do 
	  key = obj.__id__
	  @curr[key] = obj
	  return key
	end
      end

      def fetch(key, dv=@sentinel)
	synchronize do 
	  obj = peek(key)
	  if obj == @sentinel
	    return dv unless dv == @sentinel
	    raise InvalidIndexError
	  end
	  @renew[key] = obj # KeepIt
	  return obj
	end
      end

      def include?(key)
	synchronize do 
	  obj = peek(key)
	  return false if obj == @sentinel
	  true
	end
      end

      def peek(key)
	synchronize do 
	  return @curr.fetch(key, @renew.fetch(key, @gc.fetch(key, @sentinel)))
	end
      end

      private
      def alternate
	synchronize do
	  @gc = @curr       # GCed
	  @curr = @renew
	  @renew = {}
	end
      end

      def keeper
	Thread.new do
	  loop do
	    size = alternate
	    sleep(@timeout)
	  end
	end
      end
    end

    def initialize(timeout=600)
      @holder = TimerHolder2.new(timeout)
    end

    def to_obj(ref)
      return super if ref.nil?
      @holder.fetch(ref)
    rescue TimerHolder2::InvalidIndexError
      raise "invalid reference"
    end

    def to_id(obj)
      return @holder.add(obj)
    end
  end
end

# DRb.install_id_conv(TimerIdConv.new)


Current_dir [ NOT WRITEABLE ] Document_root [ NOT WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
3 Mar 2024 10.48 PM
root / root
0755
acl.rb
2.581 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
drb.rb
52.199 KB
3 Jul 2009 12.40 AM
root / linksafe
0644
eq.rb
0.247 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
extserv.rb
1.056 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
extservm.rb
1.601 KB
13 Nov 2007 1.04 PM
root / linksafe
0644
gw.rb
1.88 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
invokemethod.rb
0.757 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
observer.rb
0.36 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
ssl.rb
4.897 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
timeridconv.rb
1.472 KB
12 Feb 2007 11.01 PM
root / linksafe
0644
unix.rb
2.429 KB
6 Jun 2012 5.20 AM
root / linksafe
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025 CONTACT ME
Static GIF