Class: Farce::Strict::LeaseMap

Inherits:
Abstract::LeaseMap show all
Includes:
Farce::Shareable::Unfreezable
Defined in:
lib/farce/strict/lease_map.rb

Overview

A Ractor-shareable map that stores independently leased shareable resources directly. Initial resources, insertions, and replacements must be shareable. They are not automatically frozen. Other references remain usable, so callers must honor the checkout when accessing mutable resources.

Examples:

Updating shareable resources in an automatic lease scope

leases = Farce::Strict::LeaseMap.new do
  { primary: Farce::Strict::Map.new, replica: Farce::Strict::Map.new }
end
leases.auto_lease do
  leases[:primary][:status] = :ready
  leases[:replica][:status] = :ready
end
leases.checkout(:primary) { |state| state[:status] } # => :ready

Instance Method Summary collapse

Methods included from Farce::Shareable

#initialize, #ractor_shareable?

Methods inherited from Abstract::LeaseMap

#[], #[]=, #auto_lease, #available?, #checked_out?, #checkin, #checkout, #clear, #compare_keys_by_identity?, #compare_values_by_identity?, #delete, #duplicable?, #each, #each_key, #each_value, #fetch, #getkey, #initialize, #key?, #keys, #lease_for, #owned?, #shareable_keys?, #size, #store_if_absent, #to_a, #to_h, #try_checkout, #values

Methods inherited from Abstract::Map

#[], #[]=, #as_extended_json, #as_json, #assert_valid_keys, #assoc, #bson_type, #clear, #compare_by_identity?, #compare_keys_by_identity?, #compare_values_by_identity?, #deconstruct_keys, #delete, #dig, #each, #each_key, #each_pair, #each_value, #empty?, #fetch, #fetch_values, #getkey, #has_key?, #key, #key?, #keys, #length, #rassoc, #shareable_keys?, #size, #store, #store_if_absent, #to_a, #to_bson, #to_bson_normalized_value, #to_cbor, #to_h, #to_hash, #to_json, #to_msgpack, #to_query, #to_s, #value?, #values_at, #weak_keys?, #weak_values?

Instance Method Details

#shareable_values? ⇒ Boolean

Returns:

  • (Boolean)


24
# File 'lib/farce/strict/lease_map.rb', line 24

def shareable_values? = true