Sha256: 6dda6cdd0f7a51a892013bd8ec1a1605642b03918ec2d3d60493d2aa16d8f719

Contents?: true

Size: 1.02 KB

Versions: 10

Compression:

Stored size: 1.02 KB

Contents

require 'thread'

module Seahorse
  module Model
    class Operations
      def initialize(raw_data = {})
        @raw = raw_data.dup
        @loaded = {}
        @mutex = Mutex.new
      end

      def [](name)
        name = name.to_s
        @mutex.synchronize do
          if @raw.key?(name)
            @loaded[name] = Operation.from_hash(@raw.delete(name))
          else
            @loaded[name]
          end
        end
      end

      def []=(name, value)
        name = name.to_s
        @mutex.synchronize do
          @raw.delete(name)
          @loaded[name] = value
        end
      end

      def load!
        @raw.keys.each { |key| self[key] }
      end

      def keys
        @mutex.synchronize do
          (@loaded.keys + @raw.keys).sort
        end
      end

      def values
        self.load!
        @loaded.values
      end

      def each(&block)
        self.load!
        @loaded.each(&block)
      end

      def to_h
        self.load!
        @loaded.dup
      end
      alias to_hash to_h

    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
aws-sdk-core-2.0.0.rc10 vendor/seahorse/lib/seahorse/model/operations.rb
aws-sdk-core-2.0.0.rc9 vendor/seahorse/lib/seahorse/model/operations.rb
aws-sdk-core-2.0.0.rc8 vendor/seahorse/lib/seahorse/model/operations.rb
aws-sdk-core-2.0.0.rc7 vendor/seahorse/lib/seahorse/model/operations.rb
aws-sdk-core-2.0.0.rc6 vendor/seahorse/lib/seahorse/model/operations.rb
aws-sdk-core-2.0.0.rc5 vendor/seahorse/lib/seahorse/model/operations.rb
aws-sdk-core-2.0.0.rc4 vendor/seahorse/lib/seahorse/model/operations.rb
aws-sdk-core-2.0.0.rc3 vendor/seahorse/lib/seahorse/model/operations.rb
aws-sdk-core-2.0.0.rc2 vendor/seahorse/lib/seahorse/model/operations.rb
aws-sdk-core-2.0.0.rc1 vendor/seahorse/lib/seahorse/model/operations.rb