class Kudzu::Adapter::Memory::Frontier

Public Class Methods

new(uuid) click to toggle source
# File lib/kudzu/adapter/memory/frontier.rb, line 5
def initialize(uuid)
  @uuid = uuid
  @monitor = Monitor.new
  @queue = []
  @queued = {}
end

Public Instance Methods

clear() click to toggle source
# File lib/kudzu/adapter/memory/frontier.rb, line 31
def clear
  @queue.clear
  @queued.clear
end
dequeue(limit: 1) click to toggle source
# File lib/kudzu/adapter/memory/frontier.rb, line 22
def dequeue(limit: 1)
  @monitor.synchronize do
    links = @queue.shift(limit)
    links.each do |link|
      link.state = 1
    end
  end
end
enqueue(links) click to toggle source
# File lib/kudzu/adapter/memory/frontier.rb, line 12
def enqueue(links)
  @monitor.synchronize do
    Array(links).each do |link|
      next if @queued.key?(link.url)
      @queued[link.url] = true
      @queue << link
    end
  end
end