10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/xtop/url_checker.rb', line 10
def self.check(view, checkers={})
checker_threads = {}
checkers.each do |url, checker|
checker_threads[url] = Thread.new do
case checker.call
when :ok
view.update_status(url, "green")
when :error
view.update_status(url, "red")
else
view.update_status(url, "yellow")
end
end
Thread.new do
time_elapsed = 0.0
while true
sleep(0.1)
time_elapsed += INTERVAL
if checker_threads[url].status == false
break
elsif time_elapsed > TIMEOUT
view.update_status(url, "yellow")
Thread.kill(checker_threads[url])
break
end
end
end
end
end
|