Class: Fal::Subscriber

Inherits:
Object
  • Object
show all
Defined in:
lib/fal/subscriber.rb

Overview

Polls queue until completion, yielding status updates.

Instance Method Summary collapse

Constructor Details

#initialize(queue:, poll_interval:, timeout:) ⇒ Subscriber

Returns a new instance of Subscriber.



6
7
8
9
10
# File 'lib/fal/subscriber.rb', line 6

def initialize(queue:, poll_interval:, timeout:)
  @queue = queue
  @poll_interval = poll_interval
  @timeout = timeout
end

Instance Method Details

#wait_for_completion(app_id, request_id, &on_update) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/fal/subscriber.rb', line 12

def wait_for_completion(app_id, request_id, &on_update)
  deadline = Time.now + @timeout

  loop do
    check_timeout(deadline)
    status = @queue.status(app_id, request_id)
    yield_status(status, &on_update)
    return fetch_result(app_id, request_id) if status.completed?

    sleep(@poll_interval)
  end
end