Method: Flydata::QueryBasedSync::ResourceRequester#each_response

Defined in:
lib/flydata/query_based_sync/resource_requester.rb

#each_response(table_name, interval = 1) ⇒ Object

Fetch resources for a table It may call the callback multiple times in the following cases

- The resource size is bigger than the max size per request
- Resume to fetch resources if resume info exists in per-table position file


36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/flydata/query_based_sync/resource_requester.rb', line 36

def each_response(table_name, interval = 1)
  latest_src_pos = context.source_pos_class.new(context.table_meta.current_snapshot)

  loop do
    responses = fetch_responses_once(table_name, latest_src_pos)
    break if responses.nil? || responses.empty?
    responses.each do |response|
      yield response
    end
    break if responses.last.new_source_pos >= latest_src_pos
    sleep interval  # to avoid rush
  end

  nil
end