Sha256: 4105bc1494f39bd3ec69d164b40b8e6f8748278261844ddd7009a33e8d2bc77e
Contents?: true
Size: 876 Bytes
Versions: 1
Compression:
Stored size: 876 Bytes
Contents
module HashPersistent class Counting class << self @@store = {} @@prefix = "" @@next_key = 0 @@next_key_inc_lock = Mutex.new def setup(store, prefix) raise ArgumentError unless store.respond_to?(:has_key?) and prefix.respond_to?(:to_s) @@store = store @@prefix = prefix end def find(key) @@store[@@prefix + key] end end attr_reader :key def initialize @@next_key_inc_lock.synchronize do @key = @@next_key.to_s @@next_key += 1 end @@store[@@prefix + @key] = self end def delete raise RuntimeError unless @@store.has_key?(@@prefix + @key) @@store.delete(@@prefix + @key) end def update raise RuntimeError unless @@store.has_key?(@@prefix + @key) @@store[@@prefix + @key] = self end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
kissifer-hash-persistent-0.0.3 | lib/hash-persistent/counting.rb |