Method: UState::Aggregator#start

Defined in:
lib/ustate/aggregator.rb

#startObject

Polls index for states matching each fold, applies fold, and inserts into index.



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/ustate/aggregator.rb', line 57

def start
  @runner = Thread.new do
    loop do
      begin
        interval = (@interval.to_f / @folds.size) rescue @interval
        @folds.each do |f, query|
          matching = @index.query(Query.new(string: query))
          unless matching.empty?
            case combined = f[matching]
            when State
              @index << combined
            when Array
              combined.each do |s|
                @index << s
              end
            end
          end
          sleep interval
        end
      rescue Exception => e
        @server.log.error e
        sleep 1
      end
    end
  end
end