Sha256: 61cdc2e1a5d6cd8aa1503b6ab74734295774a6bc43c82fe1834daa9062abf592

Contents?: true

Size: 1.23 KB

Versions: 4

Compression:

Stored size: 1.23 KB

Contents

require "celluloid" unless defined? Celluloid

module Celluloid
  module Extras
    # Concurrent Hash mirroring the existing Hash API as an Actor.
    class Hash
      include Celluloid

      def initialize(starter={})
        @outer = starter
      end

      def [](k)
        @outer[k]
      end

      def []=(k, v)
        @outer.store(k, v)
        v
      end

      def key?(k)
        @outer.key?(k)
      end

      def inspect
        @outer.inspect
      end

      def insert(k, v)
        @outer[k] = v
      end

      def merge(h)
        @outer.merge(h)
      end

      def merge!(h)
        @outer.merge!(h)
      end

      def delete(k)
        @outer.delete(k)
      end

      def each(&b)
        @outer.each(&b)
      end

      def sort_by(&b)
        @outer.sort_by(&b)
      end

      def inject(s=nil, &b)
        @outer.inject(s, &b)
      end

      def select!(&b)
        @outer.select!(&b)
      end

      def select(&b)
        @outer.select(&b)
      end

      def replace(h)
        @outer.replace(h)
      end

      def empty?
        @outer.count == 0
      end

      def any?
        @outer.any?
      end

      def count
        @outer.count
      end

      def keys
        @outer.keys
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
celluloid-extras-0.20.5 lib/celluloid/extras/hash.rb
celluloid-extras-0.20.1 lib/celluloid/extras/hash.rb
celluloid-extras-0.20.0 lib/celluloid/extras/hash.rb
celluloid-extras-0.1.4 lib/celluloid/extras/hash.rb