|
11 | 11 | from splitio.client.config import sanitize as sanitize_config, DEFAULT_DATA_SAMPLING |
12 | 12 | from splitio.client import util |
13 | 13 | from splitio.client.listener import ImpressionListenerWrapper |
14 | | -from splitio.engine.impressions import Manager as ImpressionsManager |
15 | | -from splitio.engine.impressions import ImpressionsMode |
16 | | -from splitio.engine.manager import Counter as ImpressionsCounter |
17 | | -from splitio.engine.strategies import StrategyNoneMode, StrategyDebugMode, StrategyOptimizedMode |
18 | | -from splitio.engine.adapters import InMemorySenderAdapter, RedisSenderAdapter |
| 14 | +from splitio.engine.impressions.impressions import Manager as ImpressionsManager |
| 15 | +from splitio.engine.impressions.impressions import ImpressionsMode |
| 16 | +from splitio.engine.impressions.manager import Counter as ImpressionsCounter |
| 17 | +from splitio.engine.impressions.strategies import StrategyNoneMode, StrategyDebugMode, StrategyOptimizedMode |
| 18 | +from splitio.engine.impressions.adapters import InMemorySenderAdapter, RedisSenderAdapter |
| 19 | +from splitio.engine.impressions import set_classes |
19 | 20 |
|
20 | 21 | # Storage |
21 | 22 | from splitio.storage.inmemmory import InMemorySplitStorage, InMemorySegmentStorage, \ |
@@ -324,30 +325,10 @@ def _build_in_memory_factory(api_key, cfg, sdk_url=None, events_url=None, # pyl |
324 | 325 | 'impressions': InMemoryImpressionStorage(cfg['impressionsQueueSize']), |
325 | 326 | 'events': InMemoryEventStorage(cfg['eventsQueueSize']), |
326 | 327 | } |
327 | | - imp_counter = ImpressionsCounter() if cfg['impressionsMode'] != ImpressionsMode.DEBUG else None |
328 | | - |
329 | | - unique_keys_synchronizer = None |
330 | | - clear_filter_sync = None |
331 | | - unique_keys_task = None |
332 | | - clear_filter_task = None |
333 | | - impressions_count_sync = None |
334 | | - impressions_count_task = None |
335 | | - |
336 | | - if cfg['impressionsMode'] == ImpressionsMode.NONE: |
337 | | - imp_strategy = StrategyNoneMode(imp_counter) |
338 | | - clear_filter_sync = ClearFilterSynchronizer(imp_strategy.get_unique_keys_tracker()) |
339 | | - unique_keys_synchronizer = UniqueKeysSynchronizer(InMemorySenderAdapter(apis['telemetry']), imp_strategy.get_unique_keys_tracker()) |
340 | | - unique_keys_task = UniqueKeysSyncTask(unique_keys_synchronizer.send_all) |
341 | | - clear_filter_task = ClearFilterSyncTask(clear_filter_sync.clear_all) |
342 | | - imp_strategy.get_unique_keys_tracker().set_queue_full_hook(unique_keys_task.flush) |
343 | | - impressions_count_sync = ImpressionsCountSynchronizer(apis['impressions'], imp_counter) |
344 | | - impressions_count_task = ImpressionsCountSyncTask(impressions_count_sync.synchronize_counters) |
345 | | - elif cfg['impressionsMode'] == ImpressionsMode.DEBUG: |
346 | | - imp_strategy = StrategyDebugMode() |
347 | | - else: |
348 | | - imp_strategy = StrategyOptimizedMode(imp_counter) |
349 | | - impressions_count_sync = ImpressionsCountSynchronizer(apis['impressions'], imp_counter) |
350 | | - impressions_count_task = ImpressionsCountSyncTask(impressions_count_sync.synchronize_counters) |
| 328 | + |
| 329 | + unique_keys_synchronizer, clear_filter_sync, unique_keys_task, \ |
| 330 | + clear_filter_task, impressions_count_sync, impressions_count_task, \ |
| 331 | + imp_strategy = set_classes('MEMORY', cfg['impressionsMode'], apis) |
351 | 332 |
|
352 | 333 | imp_manager = ImpressionsManager( |
353 | 334 | _wrap_impression_listener(cfg['impressionListener'], sdk_metadata), |
@@ -432,31 +413,9 @@ def _build_redis_factory(api_key, cfg): |
432 | 413 | _MIN_DEFAULT_DATA_SAMPLING_ALLOWED) |
433 | 414 | data_sampling = _MIN_DEFAULT_DATA_SAMPLING_ALLOWED |
434 | 415 |
|
435 | | - unique_keys_synchronizer = None |
436 | | - clear_filter_sync = None |
437 | | - unique_keys_task = None |
438 | | - clear_filter_task = None |
439 | | - impressions_count_sync = None |
440 | | - impressions_count_task = None |
441 | | - redis_sender_adapter = RedisSenderAdapter(redis_adapter) |
442 | | - |
443 | | - if cfg['impressionsMode'] == ImpressionsMode.NONE: |
444 | | - imp_counter = ImpressionsCounter() |
445 | | - imp_strategy = StrategyNoneMode(imp_counter) |
446 | | - clear_filter_sync = ClearFilterSynchronizer(imp_strategy.get_unique_keys_tracker()) |
447 | | - unique_keys_synchronizer = UniqueKeysSynchronizer(redis_sender_adapter, imp_strategy.get_unique_keys_tracker()) |
448 | | - unique_keys_task = UniqueKeysSyncTask(unique_keys_synchronizer.send_all) |
449 | | - clear_filter_task = ClearFilterSyncTask(clear_filter_sync.clear_all) |
450 | | - imp_strategy.get_unique_keys_tracker().set_queue_full_hook(unique_keys_task.flush) |
451 | | - impressions_count_sync = ImpressionsCountSynchronizer(redis_sender_adapter, imp_counter) |
452 | | - impressions_count_task = ImpressionsCountSyncTask(impressions_count_sync.synchronize_counters) |
453 | | - elif cfg['impressionsMode'] == ImpressionsMode.DEBUG: |
454 | | - imp_strategy = StrategyDebugMode() |
455 | | - else: |
456 | | - imp_counter = ImpressionsCounter() |
457 | | - imp_strategy = StrategyOptimizedMode(imp_counter) |
458 | | - impressions_count_sync = ImpressionsCountSynchronizer(redis_sender_adapter, imp_counter) |
459 | | - impressions_count_task = ImpressionsCountSyncTask(impressions_count_sync.synchronize_counters) |
| 416 | + unique_keys_synchronizer, clear_filter_sync, unique_keys_task, \ |
| 417 | + clear_filter_task, impressions_count_sync, impressions_count_task, \ |
| 418 | + imp_strategy = set_classes('REDIS', cfg['impressionsMode'], redis_adapter) |
460 | 419 |
|
461 | 420 | imp_manager = ImpressionsManager( |
462 | 421 | _wrap_impression_listener(cfg['impressionListener'], sdk_metadata), |
|
0 commit comments