Sha256: 5ff0c9b41606621c0eca4e9afbebf79fa6b4a06621fdaa1de8321c62d4e88bf5
Contents?: true
Size: 1.78 KB
Versions: 4
Compression:
Stored size: 1.78 KB
Contents
module Riak module Crdt # A map that exists inside a {TypedCollection} inside another map. class InnerMap attr_reader :counters, :flags, :maps, :registers, :sets attr_accessor :name # The parent of this counter. # # @api private attr_reader :parent # @api private def initialize(parent, value={}) @parent = parent @value = value.symbolize_keys initialize_collections end # @api private def operate(inner_operation) wrapped_operation = Operation::Update.new.tap do |op| op.value = inner_operation op.type = :map end @parent.operate(name, wrapped_operation) end def pretty_print(pp) pp.object_group self do %w{counters flags maps registers sets}.each do |h| pp.comma_breakable pp.text "#{h}=" pp.pp send h end end end def pretty_print_cycle(pp) pp.text "InnerMap" end def to_value_h %w{counters flags maps registers sets}.map do |k| [k, send(k).to_value_h] end.to_h end alias :value :to_value_h # @api private def self.delete Operation::Delete.new.tap do |op| op.type = :map end end def context? @parent.context? end private def initialize_collections @counters = TypedCollection.new InnerCounter, self, @value[:counters] @flags = TypedCollection.new InnerFlag, self, @value[:flags] @maps = TypedCollection.new InnerMap, self, @value[:maps] @registers = TypedCollection.new InnerRegister, self, @value[:registers] @sets = TypedCollection.new InnerSet, self, @value[:sets] end end end end
Version data entries
4 entries across 4 versions & 1 rubygems