Sha256: ca6d7696893b25b3d82203f411deb42a355d3ed2983c5666643b940f3e7493f8

Contents?: true

Size: 988 Bytes

Versions: 25

Compression:

Stored size: 988 Bytes

Contents

# frozen_string_literal: true
module Dynflow
  class Director
    class QueueHash
      include Algebrick::TypeCheck

      def initialize(key_type = Object, value_type = Object)
        @key_type = key_type
        @value_type = value_type
        @stash     = Hash.new { |hash, key| hash[key] = [] }
      end

      def push(key, value)
        Type! key, @key_type
        Type! value, @value_type
        @stash[key].push value
      end

      def shift(key)
        return nil unless present? key
        @stash[key].shift.tap { @stash.delete(key) if @stash[key].empty? }
      end

      def present?(key)
        @stash.key?(key)
      end

      def empty?(key)
        !present?(key)
      end

      def clear
        ret = @stash.dup
        @stash.clear
        ret
      end

      def size(key)
        return 0 if empty?(key)
        @stash[key].size
      end

      def first(key)
        return nil if empty?(key)
        @stash[key].first
      end
    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
dynflow-1.8.2 lib/dynflow/director/queue_hash.rb
dynflow-1.8.1 lib/dynflow/director/queue_hash.rb
dynflow-1.8.0 lib/dynflow/director/queue_hash.rb
dynflow-1.7.0 lib/dynflow/director/queue_hash.rb
dynflow-1.6.11 lib/dynflow/director/queue_hash.rb
dynflow-1.6.10 lib/dynflow/director/queue_hash.rb
dynflow-1.6.8 lib/dynflow/director/queue_hash.rb
dynflow-1.6.7 lib/dynflow/director/queue_hash.rb
dynflow-1.6.6 lib/dynflow/director/queue_hash.rb
dynflow-1.6.5 lib/dynflow/director/queue_hash.rb
dynflow-1.6.4 lib/dynflow/director/queue_hash.rb
dynflow-1.6.3 lib/dynflow/director/queue_hash.rb
dynflow-1.6.2 lib/dynflow/director/queue_hash.rb
dynflow-1.6.1 lib/dynflow/director/queue_hash.rb
dynflow-1.4.9 lib/dynflow/director/queue_hash.rb
dynflow-1.4.8 lib/dynflow/director/queue_hash.rb
dynflow-1.5.0 lib/dynflow/director/queue_hash.rb
dynflow-1.4.7 lib/dynflow/director/queue_hash.rb
dynflow-1.4.6 lib/dynflow/director/queue_hash.rb
dynflow-1.4.5 lib/dynflow/director/queue_hash.rb