32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/rubyneat_dashboard/main.rb', line 32
def registered(app)
app.get '/' do
haml :layout
end
app.get '/views/*' do |view|
haml view.to_sym, layout: false
end
app.get '/json/*' do |path|
@params = params
@con = NEAT::controller
@pop = @con.population_complete(params['gen'].nil? ? nil : params['gen'].to_i)
rabl "/json/#{path}".to_sym, format: 'json'
end
list = []
app.get '/population', provides: 'text/event-stream' do
stream(:keep_open) do |out|
Thread.new do
loop {
payload = wrap_for_sending payload: Dashboard.dq.population.next
out << payload
}
end
list << out
$log.debug "list count #{list.count}"
out.callback {
puts 'closed'
list.delete(out)
}
out.errback {
$log.warn "population stream lost connection"
list.delete out
}
end
end
end
|