Class: Kudzu::Adapter::Memory::Frontier

Inherits:
Object
  • Object
show all
Defined in:
lib/kudzu/adapter/memory/frontier.rb

Instance Method Summary collapse

Constructor Details

#initialize(uuid) ⇒ Frontier

Returns a new instance of Frontier.



7
8
9
10
11
12
# File 'lib/kudzu/adapter/memory/frontier.rb', line 7

def initialize(uuid)
  @uuid = uuid
  @monitor = Monitor.new
  @queue = []
  @queued = {}
end

Instance Method Details

#clearObject



33
34
35
36
# File 'lib/kudzu/adapter/memory/frontier.rb', line 33

def clear
  @queue.clear
  @queued.clear
end

#dequeue(limit: 1) ⇒ Object



24
25
26
27
28
29
30
31
# File 'lib/kudzu/adapter/memory/frontier.rb', line 24

def dequeue(limit: 1)
  @monitor.synchronize do
    links = @queue.shift(limit)
    links.each do |link|
      link.state = 1
    end
  end
end

#enqueue(links) ⇒ Object



14
15
16
17
18
19
20
21
22
# File 'lib/kudzu/adapter/memory/frontier.rb', line 14

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