class WeakHashMap
Public Class Methods
new()
click to toggle source
# File lib/bidi/weakhashmap.rb, line 5 def initialize @internalHash=Hash.new @mutex=Mutex.new end
Public Instance Methods
[](key)
click to toggle source
# File lib/bidi/weakhashmap.rb, line 32 def [] key ref=@internalHash[key] return nil unless ref GC.disable unless ref.weakref_alive? { GC.enable return nil } ret_value = ref.__getobj__.value GC.enable ret_value end def delete key @mutex.synchronize do @internalHash.delete key end end end
[]=(key, value)
click to toggle source
# File lib/bidi/weakhashmap.rb, line 24 def []= key, value refDetails=RefDetails.new @internalHash, key, value ref=WeakRef.new (refDetails) @mutex.synchronize do @internalHash[key]=ref end end
delete(key)
click to toggle source
# File lib/bidi/weakhashmap.rb, line 46 def delete key @mutex.synchronize do @internalHash.delete key end end