Sha256: dfd65338847e75ad010205bc90d6e1d0b5cf637e8e30fc876955d5a3e989790c

Contents?: true

Size: 1.48 KB

Versions: 17

Compression:

Stored size: 1.48 KB

Contents

require 'concurrent'
require "ldclient-rb/interfaces"

module LaunchDarkly
  module Impl
    module DataStore
      class StatusProvider
        include LaunchDarkly::Interfaces::DataStore::StatusProvider

        def initialize(store, update_sink)
          # @type [LaunchDarkly::Impl::FeatureStoreClientWrapper]
          @store = store
          # @type [UpdateSink]
          @update_sink = update_sink
        end

        def status
          @update_sink.last_status.get
        end

        def monitoring_enabled?
          @store.monitoring_enabled?
        end

        def add_listener(listener)
          @update_sink.broadcaster.add_listener(listener)
        end

        def remove_listener(listener)
          @update_sink.broadcaster.remove_listener(listener)
        end
      end

      class UpdateSink
        include LaunchDarkly::Interfaces::DataStore::UpdateSink

        # @return [LaunchDarkly::Impl::Broadcaster]
        attr_reader :broadcaster

        # @return [Concurrent::AtomicReference]
        attr_reader :last_status

        def initialize(broadcaster)
          @broadcaster = broadcaster
          @last_status = Concurrent::AtomicReference.new(
            LaunchDarkly::Interfaces::DataStore::Status.new(true, false)
          )
        end

        def update_status(status)
          return if status.nil?

          old_status = @last_status.get_and_set(status)
          @broadcaster.broadcast(status) unless old_status == status
        end
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
launchdarkly-server-sdk-8.8.0 lib/ldclient-rb/impl/data_store.rb
launchdarkly-server-sdk-8.7.1 lib/ldclient-rb/impl/data_store.rb
launchdarkly-server-sdk-8.7.0 lib/ldclient-rb/impl/data_store.rb
launchdarkly-server-sdk-8.6.0 lib/ldclient-rb/impl/data_store.rb
launchdarkly-server-sdk-8.5.0 lib/ldclient-rb/impl/data_store.rb
launchdarkly-server-sdk-8.4.2 lib/ldclient-rb/impl/data_store.rb
launchdarkly-server-sdk-8.4.1 lib/ldclient-rb/impl/data_store.rb
launchdarkly-server-sdk-8.4.0 lib/ldclient-rb/impl/data_store.rb
launchdarkly-server-sdk-8.3.1 lib/ldclient-rb/impl/data_store.rb
launchdarkly-server-sdk-7.3.3 lib/ldclient-rb/impl/data_store.rb
launchdarkly-server-sdk-8.3.0 lib/ldclient-rb/impl/data_store.rb
launchdarkly-server-sdk-8.2.0 lib/ldclient-rb/impl/data_store.rb
launchdarkly-server-sdk-8.1.0 lib/ldclient-rb/impl/data_store.rb
launchdarkly-server-sdk-7.3.2 lib/ldclient-rb/impl/data_store.rb
launchdarkly-server-sdk-8.0.0 lib/ldclient-rb/impl/data_store.rb
launchdarkly-server-sdk-7.3.0 lib/ldclient-rb/impl/data_store.rb
launchdarkly-server-sdk-7.2.0 lib/ldclient-rb/impl/data_store.rb