Sha256: ea7a087c4ab6956b391f9095d34c87f60d0f7692e1c7c6c018ac2bc68f5e5ad7
Contents?: true
Size: 870 Bytes
Versions: 5
Compression:
Stored size: 870 Bytes
Contents
module Asynchronic module DataStore class InMemory include Helper def initialize(hash={}) @hash = {} @mutex = Mutex.new @keys_mutex = Hash.new { |h,k| h[k] = Mutex.new } self.class.connections[object_id] = self end def [](key) @hash[key.to_s] end def []=(key, value) @mutex.synchronize { @hash[key.to_s] = value } end def delete(key) @hash.delete key.to_s end def keys @hash.keys.map { |k| Key.new k } end def synchronize(key, &block) @keys_mutex[key].synchronize &block end def connection_args [object_id] end def self.connect(object_id) connections[object_id] end private def self.connections @connections ||= {} end end end end
Version data entries
5 entries across 5 versions & 1 rubygems