Sha256: 29c7f1352f7872e19056bd73a56ab8628bf3438b1ce3ac24a456db582da2543a

Contents?: true

Size: 689 Bytes

Versions: 1

Compression:

Stored size: 689 Bytes

Contents

module Cubism
  class CubicleBlockStore
    include Singleton

    delegate_missing_to :@blocks

    def initialize
      @blocks = {}
    end

    def [](key)
      @blocks[key]
    end

    def []=(key, value)
      mutex.synchronize do
        @blocks[key] = value
      end
    end

    def clear
      mutex.synchronize do
        @blocks.clear
      end
    end

    private

    def mutex
      @mutex ||= Mutex.new
    end
  end

  BlockStoreItem = Struct.new(:block_location, :user_gid, :resource_gid, keyword_init: true) do
    def user
      GlobalID::Locator.locate self[:user_gid]
    end

    def resource
      GlobalID::Locator.locate self[:resource_gid]
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cubism-0.1.0.pre10 lib/cubism/cubicle_block_store.rb~