Current File : //opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/graph/sequential_prioritizer.rb |
# This implements a priority in which keys are given values that will keep them
# in the same priority in which they priorities are requested. Nested
# structures (those in which a key is contained within another key) are
# preserved in such a way that child keys are after the parent and before the
# key after the parent.
#
# @api private
class Puppet::Graph::SequentialPrioritizer < Puppet::Graph::Prioritizer
def initialize
super
@container = {}
@count = Puppet::Graph::Key.new
end
def generate_priority_for(key)
if priority_of(key).nil?
@count = @count.next
record_priority_for(key, @count)
else
priority_of(key)
end
end
def generate_priority_contained_in(container, key)
@container[container] ||= priority_of(container).down
priority = @container[container].next
record_priority_for(key, priority)
@container[container] = priority
priority
end
end