Sha256: 33b7338e7903bd5d8c3825f9363ee7abc9a6084e562dcbf564293f4b27461909

Contents?: true

Size: 1.01 KB

Versions: 61

Compression:

Stored size: 1.01 KB

Contents

require 'spiderfw/utils/shared_store'

module Spider; module Utils
    
    # Implementation of the SharedStore in memory.
    # This is a transient, per-process, thread safe store. (See SharedStore about thread safety).
    class MemorySharedStore < SharedStore
        
        def initialize(config={})
            super
            @data = {}
            @sync = Sync.new
        end
        
        def [](key)
            @sync.lock(:SH)
            res = @data[key]
            @sync.lock(:UN)
            return res
        end
        
        def []=(key, value)
            @sync.lock(:EX)
            @data[key] = value
            @sync.lock(:UN)
        end
        
        def delete(key)
            @sync.lock(:EX)
            @data.delete(key)
            @sync.lock(:UN)
        end
        
        def include?(key)
            @data.include?(key)
        end
        
        def each_key
            @data.keys.each do |k|
                yield k
            end
        end
        
    end
    
end; end

Version data entries

61 entries across 61 versions & 1 rubygems

Version Path
spiderfw-1.0.1 lib/spiderfw/utils/shared_store/memory_shared_store.rb
spiderfw-1.0.0 lib/spiderfw/utils/shared_store/memory_shared_store.rb
spiderfw-0.6.39 lib/spiderfw/utils/shared_store/memory_shared_store.rb
spiderfw-0.6.38 lib/spiderfw/utils/shared_store/memory_shared_store.rb
spiderfw-0.6.37 lib/spiderfw/utils/shared_store/memory_shared_store.rb
spiderfw-0.6.35 lib/spiderfw/utils/shared_store/memory_shared_store.rb
spiderfw-0.6.34 lib/spiderfw/utils/shared_store/memory_shared_store.rb
spiderfw-0.6.33 lib/spiderfw/utils/shared_store/memory_shared_store.rb
spiderfw-0.6.32 lib/spiderfw/utils/shared_store/memory_shared_store.rb
spiderfw-0.6.31 lib/spiderfw/utils/shared_store/memory_shared_store.rb
spiderfw-0.6.30 lib/spiderfw/utils/shared_store/memory_shared_store.rb
spiderfw-0.6.29 lib/spiderfw/utils/shared_store/memory_shared_store.rb
spiderfw-0.6.28 lib/spiderfw/utils/shared_store/memory_shared_store.rb
spiderfw-0.6.27 lib/spiderfw/utils/shared_store/memory_shared_store.rb
spiderfw-0.6.26 lib/spiderfw/utils/shared_store/memory_shared_store.rb
spiderfw-0.6.26.pre1 lib/spiderfw/utils/shared_store/memory_shared_store.rb
spiderfw-0.6.25 lib/spiderfw/utils/shared_store/memory_shared_store.rb
spiderfw-0.6.24 lib/spiderfw/utils/shared_store/memory_shared_store.rb
spiderfw-0.6.23 lib/spiderfw/utils/shared_store/memory_shared_store.rb
spiderfw-0.6.22 lib/spiderfw/utils/shared_store/memory_shared_store.rb