1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
require "celluloid" unless defined? Celluloid
module Celluloid
module Extras
# Concurrent Hash mirroring the existing Hash API as an Actor.
class Hash
include Celluloid
def initialize(starter={})
@outer = starter
end
def [](k)
@outer[k]
end
def []=(k, v)
@outer.store(k, v)
v
end
def key?(k)
@outer.key?(k)
end
def inspect
@outer.inspect
end
def insert(k, v)
@outer[k] = v
end
def merge(h)
@outer.merge(h)
end
def merge!(h)
@outer.merge!(h)
end
def delete(k)
@outer.delete(k)
end
def each(&b)
@outer.each(&b)
end
def sort_by(&b)
@outer.sort_by(&b)
end
def inject(s=nil, &b)
@outer.inject(s, &b)
end
def select!(&b)
@outer.select!(&b)
end
def select(&b)
@outer.select(&b)
end
def replace(h)
@outer.replace(h)
end
def empty?
@outer.count == 0
end
def any?
@outer.any?
end
def count
@outer.count
end
def keys
@outer.keys
end
end
end
end
|