Sha256: 10eeb7d962ba5111b340a8ce361c3f73eef45346f77740b43856edbfc20ef07d

Contents?: true

Size: 1.36 KB

Versions: 3

Compression:

Stored size: 1.36 KB

Contents

module Ecoportal
  module API
    class V1
      class Job
        class Awaiter
          module StatusFrequency
            include Common::Client::TimeOut

            DELAY_STATUS_CHECK = 4
            MIN_STATUS_CHECK   = 2

            private

            def status_checked?
              @status_checked || false
            end

            def status_check_in(pending, timeout_in:)
              # first check to be faster
              unless status_checked?
                @status_checked = true unless pending.zero? # <= increases job status requests!
                return min_delay_status_check
              end

              return default_delay_status_check if around_min_throughput?

              eta           = eta_for(pending, approach: :optimistic)
              check_in_max  = [eta, timeout_in].min * 0.90

              check_in_best = check_in_max / 2.0
              default_5     = default_delay_status_check * 5

              top_check     = [default_5, check_in_best].min.ceil
              [top_check, min_delay_status_check].max
            end

            def default_delay_status_check
              self.class::DELAY_STATUS_CHECK
            end

            def min_delay_status_check
              self.class::MIN_STATUS_CHECK
            end
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ecoportal-api-0.10.8 lib/ecoportal/api/v1/job/awaiter/status_frequency.rb
ecoportal-api-0.10.7 lib/ecoportal/api/v1/job/awaiter/status_frequency.rb
ecoportal-api-0.10.6 lib/ecoportal/api/v1/job/awaiter/status_frequency.rb