Sha256: 9f72413ddbce57ae2adffa7f4c252b4641685e13c8451dddf8f124d0d7ef12e7
Contents?: true
Size: 1.1 KB
Versions: 2
Compression:
Stored size: 1.1 KB
Contents
module Asynchronic module DataStore class InMemory include Helper def self.connect(object_id) connections[object_id] end def self.connections @connections ||= {} end def initialize @hash = {} @mutex = Mutex.new @keys_mutex = {} self.class.connections[object_id] = self end def [](key) Marshal.load(hash[key.to_s]) if hash.key? key.to_s end def []=(key, value) mutex.synchronize { hash[key.to_s] = Marshal.dump(value) } end def delete(key) hash.delete key.to_s end def delete_cascade(key) keys.select { |k| k.sections.first == key } .each { |k| delete k } end def keys hash.keys.map { |k| Key[k] } end def synchronize(key, &block) mutex.synchronize do keys_mutex[key] ||= Mutex.new end keys_mutex[key].synchronize(&block) end def connection_args [object_id] end private attr_reader :hash, :mutex, :keys_mutex end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
asynchronic-4.0.3 | lib/asynchronic/data_store/in_memory.rb |
asynchronic-4.0.2 | lib/asynchronic/data_store/in_memory.rb |