11# frozen_string_literal: true
22
33require "concurrent"
4+ require "forwardable"
45require "ldclient-rb/interfaces"
56
67module LaunchDarkly
@@ -18,15 +19,18 @@ module DataStore
1819 class StatusProviderV2
1920 include LaunchDarkly ::Interfaces ::DataStore ::StatusProvider
2021
22+ extend Forwardable
23+ def_delegators :@status_broadcaster , :add_listener , :remove_listener
24+
2125 #
2226 # Initialize the status provider.
2327 #
2428 # @param store [Object, nil] The feature store (may be nil for in-memory only)
25- # @param listeners [LaunchDarkly::Impl::Broadcaster] Broadcaster for status changes
29+ # @param status_broadcaster [LaunchDarkly::Impl::Broadcaster] Broadcaster for status changes
2630 #
27- def initialize ( store , listeners )
31+ def initialize ( store , status_broadcaster )
2832 @store = store
29- @listeners = listeners
33+ @status_broadcaster = status_broadcaster
3034 @lock = Concurrent ::ReadWriteLock . new
3135 @status = LaunchDarkly ::Interfaces ::DataStore ::Status . new ( true , false )
3236 @monitoring_enabled = store_supports_monitoring?
@@ -43,7 +47,7 @@ def update_status(status)
4347 end
4448 end
4549
46- @listeners . broadcast ( status ) if modified
50+ @status_broadcaster . broadcast ( status ) if modified
4751 end
4852
4953 # (see LaunchDarkly::Interfaces::DataStore::StatusProvider#status)
@@ -69,16 +73,6 @@ def monitoring_enabled?
6973
7074 @store . monitoring_enabled?
7175 end
72-
73- # (see LaunchDarkly::Interfaces::DataStore::StatusProvider#add_listener)
74- def add_listener ( listener )
75- @listeners . add ( listener )
76- end
77-
78- # (see LaunchDarkly::Interfaces::DataStore::StatusProvider#remove_listener)
79- def remove_listener ( listener )
80- @listeners . remove ( listener )
81- end
8276 end
8377 end
8478 end
0 commit comments