# class DRb::WeakIdConv::WeakSet

### Public Class Methods

new() click to toggle source
Calls superclass method `MonitorMixin::new`

    # File lib/drb/weakidconv.rb, line 14
    def initialize
      super()
      @immutable = {}
      @map = ObjectSpace::WeakMap.new
    end

### Public Instance Methods

add(obj) click to toggle source

    # File lib/drb/weakidconv.rb, line 20
    def add(obj)
      synchronize do
        begin
          @map[obj] = self
        rescue ArgumentError
          @immutable[obj.__id__] = obj
        end
        return obj.__id__
      end
    end

fetch(ref) click to toggle source

    # File lib/drb/weakidconv.rb, line 31
    def fetch(ref)
      synchronize do
        @immutable.fetch(ref) {
          @map.each { |key, _|
            return key if key.__id__ == ref
          }
          raise RangeError.new("invalid reference")
        }
      end
    end