@@ -45,6 +45,7 @@ def initialize(api_key, config_hash = {})
4545
4646 register_factory
4747
48+ build_events_manager
4849 build_telemetry_components
4950 build_flag_sets_filter
5051 build_repositories
@@ -53,13 +54,13 @@ def initialize(api_key, config_hash = {})
5354 build_unique_keys_tracker
5455 build_impressions_components
5556
56- @status_manager = Engine ::StatusManager . new ( @config )
57+ @status_manager = Engine ::StatusManager . new ( @config , @internal_events_queue )
5758 @split_validator = SplitIoClient ::Validators . new ( @config )
5859 @evaluator = Engine ::Parser ::Evaluator . new ( @segments_repository , @splits_repository , @rule_based_segment_repository , @config )
5960
6061 start!
6162 fallback_treatment_calculator = SplitIoClient ::Engine ::FallbackTreatmentCalculator . new ( @config . fallback_treatments_configuration )
62- @client = SplitClient . new ( @api_key , repositories , @status_manager , @config , @impressions_manager , @evaluation_producer , @evaluator , @split_validator , fallback_treatment_calculator )
63+ @client = SplitClient . new ( @api_key , repositories , @status_manager , @config , @impressions_manager , @evaluation_producer , @evaluator , @split_validator , fallback_treatment_calculator , @events_manager )
6364 @manager = SplitManager . new ( @splits_repository , @status_manager , @config )
6465 end
6566
@@ -219,9 +220,9 @@ def build_repositories
219220 else
220221 @flag_sets_repository = SplitIoClient ::Cache ::Repositories ::MemoryFlagSetsRepository . new ( @config . flag_sets_filter )
221222 end
222- @splits_repository = SplitsRepository . new ( @config , @flag_sets_repository , @flag_sets_filter )
223- @segments_repository = SegmentsRepository . new ( @config )
224- @rule_based_segment_repository = RuleBasedSegmentsRepository . new ( @config )
223+ @splits_repository = SplitsRepository . new ( @config , @flag_sets_repository , @flag_sets_filter , @internal_events_queue )
224+ @segments_repository = SegmentsRepository . new ( @config , @internal_events_queue )
225+ @rule_based_segment_repository = RuleBasedSegmentsRepository . new ( @config , @internal_events_queue )
225226 @impressions_repository = ImpressionsRepository . new ( @config )
226227 @events_repository = EventsRepository . new ( @config , @api_key , @runtime_producer )
227228 end
@@ -265,5 +266,19 @@ def build_impressions_components
265266 def build_flag_sets_filter
266267 @flag_sets_filter = SplitIoClient ::Cache ::Filter ::FlagSetsFilter . new ( @config . flag_sets_filter )
267268 end
269+
270+ def build_events_manager
271+ @events_manager = Engine ::Events ::EventsManager . new ( Engine ::Events ::EventsManagerConfig . new ,
272+ Engine ::Events ::EventsDelivery . new ( @config ) ,
273+ @config )
274+ if @config . consumer?
275+ @internal_events_queue = Engine ::Events ::NoOpEventsQueue . new
276+ return
277+ end
278+
279+ @internal_events_queue = Queue . new
280+ @events_task = Engine ::Events ::EventsTask . new ( @events_manager . method ( :notify_internal_event ) , @internal_events_queue , @config )
281+ @events_task . start
282+ end
268283 end
269284end
0 commit comments