Sha256: e29fca2aaf0e07fd2aae7e85936fb28c69e70423ad13f93e597b1b4e3b23f224
Contents?: true
Size: 1.31 KB
Versions: 1
Compression:
Stored size: 1.31 KB
Contents
# frozen_string_literal: true require_relative 'intervals' module Flagsmith # Manager to asynchronously fetch the environment class EnvironmentDataPollingManager include Flagsmith::SDK::Intervals attr_reader :failures_since_last_update def initialize(main, refresh_interval_seconds, polling_manager_failure_limit) @main = main @refresh_interval_seconds = refresh_interval_seconds @polling_manager_failure_limit = polling_manager_failure_limit @failures_since_last_update = 0 end # rubocop:disable Metrics/MethodLength def start update_environment = lambda { stop @interval = set_interval(@refresh_interval_seconds) do @main.update_environment @failures_since_last_update = 0 rescue StandardError => e @failures_since_last_update += 1 @main.config.logger.warn "Failure to update the environment due to an error: #{e}" raise e if @failures_since_last_update > @polling_manager_failure_limit end } # TODO: this call should be awaited for getIdentityFlags/getEnvironmentFlags when enableLocalEvaluation is true update_environment.call end # rubocop:enable Metrics/MethodLength def stop return unless @interval clear_interval(@interval) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
flagsmith-4.3.0 | lib/flagsmith/sdk/pooling_manager.rb |