module Dashboard::Routing::Main

Public Class Methods

registered(app) click to toggle source
# 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

  # streaming population data
  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